选择json包含的位置



我有一个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

相关内容

  • 没有找到相关文章

最新更新