从 Postgres JSONB 列中提取值
Extract values from Postgres JSONB column
我在 table events
中有一个名为 metrics
的 JSONB 列。它将各种指标存储为平面哈希,例如
{"m1": 123, "m2": 122.3, "m3": 32}
我想提取存储在该列中的所有 值。可能吗?我找到了一个函数 jsonb_object_keys(jsonb)
,但我没有找到任何类似的值。
在横向连接中使用 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)
为此目的使用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)
使用 json_each 您可以提取值:
SELECT value FROM json_each('{"m1": 123, "m2": 122.3, "m3": 32}')
输出
value
-----
123
122.3
32
我在 table events
中有一个名为 metrics
的 JSONB 列。它将各种指标存储为平面哈希,例如
{"m1": 123, "m2": 122.3, "m3": 32}
我想提取存储在该列中的所有 值。可能吗?我找到了一个函数 jsonb_object_keys(jsonb)
,但我没有找到任何类似的值。
在横向连接中使用 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)
为此目的使用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)
使用 json_each 您可以提取值:
SELECT value FROM json_each('{"m1": 123, "m2": 122.3, "m3": 32}')
输出
value
-----
123
122.3
32