我在表metrics
中有一个名为events
的JSONB列。它将各种度量存储为平面散列,例如
{"m1": 123, "m2": 122.3, "m3": 32}
我想提取该列中存储的所有值。可能吗?我找到了一个函数jsonb_object_keys(jsonb)
,但我没有找到任何类似的值。
答案 0 :(得分:2)
为此目的使用jsonb_each()
:
WITH json_test(data) AS ( VALUES
('{"m1": 123, "m2": 122.3, "m3": 32}'::JSONB)
)
SELECT element.value
FROM json_test jt, jsonb_each(jt.data) as element;
输出:
value
-------
123
122.3
32
(3 rows)
答案 1 :(得分:1)
在横向联接中使用jsonb_each()
:
with val as (
select '{"m1": 123, "m2": 122.3, "m3": 32}'::jsonb js
)
select key, value
from val,
lateral jsonb_each(js);
key | value
-----+-------
m1 | 123
m2 | 122.3
m3 | 32
(3 rows)