sql - 如何计算 postgresql 中 JSON 的 setof/键数?

标签 sql json postgresql

我在 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/

相关文章:

sql - 这可以在一个sql查询中完成吗?

mysql - 在某个日期之间为 id_emp 选择计数 id_product

php - 在 MySQL 中按年和月分组

php - Swift httppost 数据未插入到 MySQL 数据库

python - 使用 python 和 postgres,execute 函数中的变量?

django - 从基于函数的 View 更新对象值

postgresql - 安装 PostGIS 的问题

MySQL - 在 CASE 中组合多个 WHEN 条件

java - 将本地存储中的文件名依次追加到 saveJSONObject

php - jQuery,$.post() 未访问目标网址