как вытащить из БД redshift определенное значение из строки через postgreSQL
Имеются вот такие поля
| event_value | lvl |
|---|---|
| {"af_level":"19"} | |
| {"af_level":"2"} |
Нужно из поля event_value, которое имеет формат redshift вытащить только значение уровня с помощью postgreSQL
Пробовала через такую конструкцию substring(event_value, 14).
Результат выводит такой
.
В таком случае не знаю как выкинуть оставшиеся ненужные элементы строки
Если подставить второй аргумент substring(event_value, 14, 2), то с двузначными числами становиться все как надо, с однозначными нет 
Ответы (1 шт):
Автор решения: Alexander Pavlov
→ Ссылка
Это не формат "redshift", это JSON.
Надо сконвертировать строку к типу JSON, а потом уже читать поле с помощью оператора ->>
with d as (
select '{"af_level":"19"}' event_value
union all select '{"af_level":"1"}'
)
select event_value::json->>'af_level' from d
Вот тут больше операторов, на будущее https://www.postgresql.org/docs/13/functions-json.html