如何从postgresql json数组字段中获取数据

时间:2016-11-08 10:19:28

标签: sql json postgresql

我有表字段jsonb类型并且具有以下数据。

{"roles": ["7", "73", "163"]}

我必须通过postgresql检查“73”是否存在。

我已经搜索了但是唯一的解决方案是对象的对象而不是数组的对象。

我尝试过以下查询,但它不起作用

SELECT * 
FROM table 
WHERE field->'roles' ? ARRAY ['73'];

- 更新 -

我也只需要那个具有确切价值的记录

{“roles”:[“7”]}

{“roles”:[“7”,“73”,“163”]}

即。字段中只有“7”而不是其他内容。

1 个答案:

答案 0 :(得分:1)

通过文档https://www.postgresql.org/docs/current/static/functions-json.html#FUNCTIONS-JSONB-OP-TABLE了解所有案例:

-single-密钥是否存在于json数组中:

SELECT  * 
FROM    table 
WHERE   field -> 'roles' ? '73';

右边的键是否存在于json数组中:

SELECT  * 
FROM    table 
WHERE   field -> 'roles' ?| ARRAY[ '7', '163' ] ;

左边的json数组中是否存在-all-右键:

SELECT  * 
FROM    table 
WHERE   field -> 'roles' ?& ARRAY[ '7', '163' ] ;

左json数组是否与正确的json数组匹配 -

SELECT  * 
FROM    table 
WHERE   field -> 'roles' = $$[ "7" ]$$::jsonb ;

希望有所帮助:)