问题:PostgresQL从多维数组类型的Json字段中获取数据

我正在寻找从 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的那些行。

请有人可以帮我这个查询。

解答

鉴于我们甚至不知道哪些键将具有is_draft设置为false的子 JSON 对象,这里的一种选择是将 JSON 转换为文本并使用LIKE搜索它:

SELECT *
FROM yourTable
WHERE Details::text LIKE '%"is_draft": "false"%';

演示

Logo

PostgreSQL社区为您提供最前沿的新闻资讯和知识内容

更多推荐