我有一个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的记录id ?
您可以使用操作符@>
来检查数组是否包含特定的值。
然而,这只适用于jsonb
值,而不是json
值。所以你需要转换你的列。
select *
from the_table
where bar_id:jsonb @> '[437]';
最好将列的类型改为jsonb
。