簡體   English   中英

postgresql中的json對象查詢

[英]json object query in postgresql

我正在處理包含 JSON 數據的行。 專欄是這樣的

log 
[{{"status":"orderderd","date":"2021-10-13T16:30:57.134Z"},{"status":"deivered","date":"2021-10-13T16:30:57.134Z"}}]

現在我想獲得狀態交付的時間。 我該如何為此編寫查詢?

如果您使用的是 Postgres 12 或更高版本,則可以使用 JSON 路徑查詢輕松完成此操作:

select jsonb_path_query_first(log, '$[*] ? (@.status == "delivered").date') #>> '{}' as delivery_date
from the_table;

jsonb_path_query_first返回一個jsonb值,表達式#>> '{}'將其轉換為文本值。

如果您使用的是舊版本,則需要取消嵌套數組:

select (select l.element ->> 'date'
        from jsonb_array_elements(t.log) as l(element)
        where l.element ->> 'status' = 'delivered'
        limit 1) as delivery_date
from the_table t;

兩個查詢都假定該列被定義為jsonb (它應該是)。 如果不是,則需要對其進行轉換(例如log::jsonb

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM