小编典典

如何计算PostgreSQL中JSON的setof /键数?

sql

我在jsonb存储地图时有一列,就像{'a':1,'b':2,'c':3}每一行的键数不同。

我想算一下-jsonb_object_keys可以检索密钥,但是它在 setof

有这样的东西吗?

(select count(jsonb_object_keys(obj) from XXX )

(这将无法用作ERROR: set-valued function called in context that cannot accept a set

Postgres JSON函数和运算符文档

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

交叉表不可行,因为密钥数量可能很大。


阅读 168

收藏
2021-04-22

共1个答案

小编典典

您可以将键转换为数组,并使用array_length获得此信息:

select array_length(array_agg(A.key), 1) from (
    select json_object_keys('{"f1":"abc","f2":{"f3":"a", "f4":"b"}}') as key
) A;

如果需要在整个表中使用它,则可以按主键进行分组。

2021-04-22