在我的表 mytable
中,我有一个名为 data
的 json 字段,我插入了带有很多键和值的 json。
我知道可以像这样选择单个字段:
SELECT data->'mykey' as mykey from mytable
但是我怎样才能得到某个深度的所有 json 键的概览呢?我本以为会是这样的
SELECT data->* from mytable
但这行不通。有类似的吗?
最佳答案
您可以使用 json_object_keys()
function获取 json
值的所有顶级键:
SELECT keys.*
FROM mytable, json_object_keys(mytable.data) AS keys (mykey);
如果您想在更深层次上搜索,那么首先使用 #>
运算符从 json
值中提取更深层次:
SELECT keys.*
FROM mytable, json_object_keys(mytable.data #> '{level1, level2}') AS keys (mykey);
请注意,该函数返回一组文本
,因此您应该将该函数作为行源来调用。
如果您使用的是 jsonb
数据类型,则使用 jsonb_object_keys()
函数。
关于sql - 从 postgres 表中选择所有现有的 json 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33481233/