Найти значение в массиве (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'
→ Ссылка