#json #postgresql
Вопрос:
У меня есть таблица postgres:
Column | Type
------------------ ------------------------
id | bigint |
foo_id | integer |
foo_name | character varying(255) |
bar_id | json |
С ценностями
id | foo_id | foo_name | bar_id
-------- ---------------- ------------------------------- ----------------------------
17 | 717639 | name 1 | [910, 5383774, 437, 5350]
18 | 8442028 | name 2 | [7274, 6241861, 437, 73669939]
19 | 77415 | name n | [7274, 5513, 249642574, 743181502]
Как я могу выбрать из этой таблицы идентификаторы записей, где bar_id содержит значение 437?
Комментарии:
1. пожалуйста, поделитесь своей попыткой
Ответ №1:
Вы можете использовать оператор @>
, чтобы проверить, содержит ли массив определенное значение.
Однако это работает только со jsonb
значениями, а не json
со значениями. Поэтому вам нужно создать свою колонку.
select *
from the_table
where bar_id:jsonb @> '[437]';
Было бы лучше изменить тип столбца на jsonb
.