PostgreQL从多维数组类型的Json字段中获取数据

时间:2018-10-24 03:48:04

标签: php sql json postgresql

我正在查找从json类型的列的表中获取数据的查询。

我的桌子如下:

`ID | ParentID |        Details`

`-------------------------------------------------------------------------------------------`

`1  |  10      | {"_translated": {"en_US": {"is_draft": "false"}, "default_locale": "en"}}`

`2  |  20      | {"_translated": {"en_US": {"is_draft": "true"}, "default_locale": "en"}}`

`3  |  30      | {"_translated": {"en_CA": {"is_draft": "true"}, "default_locale": "en"}}`

`4  |  40      | {"_translated": {"en_CA": {"is_draft": "false"}, "default_locale": "en"}}`

我想获取其is_draft = false的那些行。

请有人可以帮助我进行此查询。

2 个答案:

答案 0 :(得分:2)

鉴于我们甚至都不知道哪个键会将is_draft设置为false的子JSON对象,这里的一种选择是将JSON转换为文本并使用{{ 1}}:

LIKE

Demo

答案 1 :(得分:0)

尝试:

SELECT 
   id,
   parent_id, 
   details
FROM books
WHERE details->'_translated' -> 'en_US' -> 'is_draft' ='false' 
OR details->'_translated' -> 'en_CA' -> 'is_draft' ='false' ;