我有數據如下:需要從PostgreSQL表動態地選擇一個JSON數組元素
ID Name Data
1 Joe ["Mary","Joe"]
2 Mary ["Sarah","Mary","Mary"]
3 Bill ["Bill","Joe"]
4 James ["James","James","James"]
我想要編寫從陣列,這不等於名稱字段選擇的最後一個元素的查詢。例如,我想查詢返回的結果如下:
ID Name Last
1 Joe Mary
2 Mary Sarah
3 Bill Joe
4 James (NULL)
我越來越近 - 我可以選擇使用以下查詢的最後一個元素:
SELECT ID, Name,
(Data::json->(json_array_length(Data::json)-1))::text AS Last
FROM table;
ID Name Last
1 Joe Joe
2 Mary Mary
3 Bill Joe
4 James James
不過,我需要一個更公平 - 評估最後一個項目,如果它與名稱字段相同,則嘗試倒數第二個字段,等等。
任何幫助或指針將不勝感激!
Crucial:你的Postgres版本?數據類型爲「json」還是「jsonb」? –
PostgreSQL版本? –