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