假设我有以下数据
WITH test(id, data) AS (
VALUES
(1, '{"key1": "Some text"}'::jsonb),
(2, '{"other_key": "Some longer text"}'::jsonb),
(3, '{"key_3": "Short"}'::jsonb)
)
select ??? from test;
请注意,JSON数据是简单的键值数据。密钥可以是任何东西,值总是一个字符串。
我想返回值字段的最大字符数。在这种情况下为16 select length('Some longer text')
;
答案 0 :(得分:3)
您需要将值转换为集合,然后您可以对其进行操作:
WITH test(id, data) AS (
VALUES
(1, '{"key1": "Some text"}'::jsonb),
(2, '{"other_key": "Some longer text"}'::jsonb),
(3, '{"key_3": "Short"}'::jsonb)
)
select max(length(t.val))
from test, jsonb_each_text(data) as t(k,val);