[英]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.