Yan*_*hon 8 postgresql array json postgresql-9.4
是否可以将 JSON 对象键作为 PostgreSQL 中的值数组返回?
在 JavaScript 中,这只是Object.keys(obj),它返回一个字符串数组。
例如,如果我有一张这样的表:
tbl_items
---------
id bigserial NOT NULL
obj json NOT NULL
Run Code Online (Sandbox Code Playgroud)
如果有这样的一行:
id obj
----- -------------------------
123 '{"foo":1,"bar":2}'
Run Code Online (Sandbox Code Playgroud)
我怎样才能有一个查询返回:
id keys
----- ------------------
123 '{"foo","bar"}'
Run Code Online (Sandbox Code Playgroud)
Erw*_*ter 16
当然,与json_object_keys(). 这将返回一个set - 与Object.keys(obj)您所指的 JavaScript 函数不同,它返回一个array。将集合提供给ARRAY构造函数以对其进行转换:
SELECT id, ARRAY(SELECT json_object_keys(obj)) AS keys
FROM tbl_items;
Run Code Online (Sandbox Code Playgroud)
或jsonb_object_keys()用于jsonb.
这将返回每行的键数组(不是整个表)。
更详细的形式是拼出LATERAL连接而不是相关子查询:
SELECT t.id, k.keys
FROM tbl_items t
LEFT JOIN LATERAL (SELECT ARRAY(SELECT * FROM json_object_keys(t.obj)) AS keys) k ON true;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23128 次 |
| 最近记录: |