在JSON列中搜索包含特定值的JSON

时间:2018-10-03 08:58:55

标签: sql database postgresql

我有一个PostgreSQL数据库,其中的表名为choices,在choices表中有一个名为json的列,其中包含JSON条目,例如:[1,2,3]

我需要一个查询,该查询返回包含特定值的所有整数。

例如,我有以下条目:

  • [1,2,3] [6,7,1] [4,5,2]

我想获取所有包含值1的条目,因此它将返回: [1,2,3] [6,7,1]

谢谢

1 个答案:

答案 0 :(得分:1)

demo: db<>fiddle

json_array_elements_text函数将json数组扩展为每个元素一行(作为文本)。这样,您就可以根据自己喜欢的任何值对其进行过滤。

SELECT 
    json_data
FROM choices, json_array_elements_text(json_data) elem
WHERE value = '1'

Documentation: JSON functions


请注意,“ json”是PostgreSQL中json类型的名称。您最好重命名您的列,以避免发生一些冲突。 (我叫我的json_data