從一個 json 物件我可以得到 requestId 的值作為文本:
"request" ->> 'requestId'
with -> 我得到一個 json 部分
"request" -> 'requestId'
它如何與 jsonb_path_query() 一起使用以獲取文本形式的值?
jsonb_path_query(request :: jsonb, '$.requestId')
一種解決方案應該是:
select test1 ->> 0
from (
select jsonb_path_query(request :: jsonb, '$.journeys[*].costs.distance.value') test1,
jsonb_path_query(request :: jsonb, '$.journeys[*].costs.distance.unit') test2
from json_import ri
) foo;
還是有更聰明的方法來獲得相同的答案?
uj5u.com熱心網友回復:
從結果中提取字串jsonb:
SELECT j ->> 0
FROM jsonb_path_query(request::jsonb, '$.requestId') AS j(j);
uj5u.com熱心網友回復:
您可以通過在 JSON 路徑運算式中選擇“父”物件來簡化查詢:
select dist ->> 'value' as test1,
dist ->> 'cost' as test2
from (
select jsonb_path_query(request::jsonb, '$.journeys[*].costs.distance') as dist
from json_import ri
) foo;
甚至可能會快一點,因為jsonb_path_query它只被呼叫一次。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/349172.html
標籤:json PostgreSQL jsonb
