Postgresql
Postgres 查詢以數組形式返回 JSON 對象鍵
是否可以在 PostgreSQL 中將 JSON 對象鍵作為值數組返回?
在 JavaScript 中,這只是
Object.keys(obj)
,它返回一個字元串數組。例如,如果我有這樣的表:
tbl_items --------- id bigserial NOT NULL obj json NOT NULL
如果有這樣的一行:
id obj ----- ------------------------- 123 '{"foo":1,"bar":2}'
我怎樣才能有一個查詢返回:
id keys ----- ------------------ 123 '{"foo","bar"}'
當然,與
json_object_keys()
. 這將返回一個集合Object.keys(obj)
- 與您所指的 JavaScript 函式不同,它返回一個數組。將集合提供給ARRAY
建構子以對其進行轉換:SELECT id, ARRAY(SELECT json_object_keys(obj)) AS keys FROM tbl_items;
或
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;