簡體   English   中英

如何在Postgres和JOIN中獲取jsonb數組內的鍵的值

[英]How to get value of a key inside an jsonb array in postgres and JOIN

我有看起來像在postgres的json表中的數據,其中一列稱為content具有類似於以下內容的數據

{schd:[{key1:val1, key2:val2}]}

我提取密鑰的方式是

jsonb_array_elements('content'->'schd')->'key1'

但是,由於收到錯誤,我無法使用它來加入/啟用

ERROR:  argument of JOIN/ON must not return a set

我嘗試使用LATERAL,但是我需要澄清這是否會產生交叉聯接,因為輸出看起來並不安靜。

我在這里應該采用其他方法有什么建議嗎?

{"Schd":["key1":"val1", "key2":"val2"]}不是有效的Json,因為數組中的鍵不是數字鍵。

如果數組實際上是像{"Schd":{"key1":"val1", "val1":"val2"}} ,則可以使用以下命令訪問val1

test=# SELECT '{"Schd":{"key1":"val1", "val1":"val2"}}'::json->'Schd'->'key1';
 ?column? 
----------
 "val1"
(1 row)

如果其數組類似{"Schd":["val1", "val2"]} ,則可以使用以下命令訪問val1

test=# SELECT '{"Schd":["val1", "val2"]}'::json->'Schd'->0;
 ?column? 
----------
 "val1"
(1 row)

更新:

如果Json是{"schd":[{"key1":"val1", "key2":"val2"}]} ,則如何獲取val1

test=# SELECT '{"schd":[{"key1":"val1", "key2":"val2"}]}'::json->'schd'->0->'key1';
 ?column? 
----------
 "val1"
(1 row)

暫無
暫無

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

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