我在 jsonb
中有一列存储 map ,例如 {'a':1,'b':2,'c':3}
其中数字每行的键数不同。
我想算一下 -- jsonb_object_keys 可以检索 key ,但它在 setof
中
有这样的东西吗?
(select count(jsonb_object_keys(obj) from XXX )
(这不会作为错误:在无法接受集合的上下文中调用的集值函数
)
Postgres JSON Functions and Operators Document
json_object_keys(json)
jsonb_object_keys(jsonb)
setof text Returns set of keys in the outermost JSON object.
json_object_keys('{"f1":"abc","f2":{"f3":"a", "f4":"b"}}')
json_object_keys
------------------
f1
f2
交叉表不可行,因为键的数量可能很大。
最佳答案
最短:
SELECT count(*) FROM jsonb_object_keys('{"a": 1, "b": 2, "c": 3}'::jsonb);
返回 3
如果你想要一个表中所有 json 键的数量,它会给出:
SELECT (SELECT COUNT(*) FROM jsonb_object_keys(myJsonField)) nbr_keys FROM myTable;
编辑:第二个例子中有错别字。
关于sql - 如何计算 postgresql 中 JSON 的 setof/键数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36171737/