从 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