Найти значение в массиве (PostgreSQL)
Имеется колонка Col_name с типом json в которой хранятся значения в виде:
| Id | Col_name |
| ----------- | ------------------ |
| 1 | ["home"] |
| 2 | ["work"] |
| 3 | ["home","work"] |
Я хочу выбрать все строки у которых есть в массиве "home", т.е. 1-я и 3-я строка. Я почитал и в документации пишут, массив должен быть вида {"home", "work"} и тогда можно будет найти по запросу:
SELECT Col_name
FROM Table
WHERE Col_name::varchar = ANY('{home}')
Но у меня хранится массив в другом виде, подскажите как можно решить проблему?
Ответы (1 шт):
Автор решения: Мелкий
→ Ссылка
Раз у вас тип поля json - то и операторы нужно смотреть для json.
Вам нужно изменить тип данных этого поля на jsonb и тогда сможете использовать соответствующие операторы, в частности:
where col_name ? 'home'