繁体   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