在Postgres中从Json提取的查询
我的postgres db中有一个json对象,如下所示 {演员:[{人名:沙希·卡普尔,人名:普雷姆},{人名:沙米拉·泰戈尔,人名:普里蒂},{人名:沙特鲁汉·辛哈,人名:阿马尔博士]} 从编辑器编辑:保留原始版本,因为它是无效的json,在我的编辑中我修复了它在Postgres中从Json提取的查询,json,postgresql,Json,Postgresql,我的postgres db中有一个json对象,如下所示 {演员:[{人名:沙希·卡普尔,人名:普雷姆},{人名:沙米拉·泰戈尔,人名:普里蒂},{人名:沙特鲁汉·辛哈,人名:阿马尔博士]} 从编辑器编辑:保留原始版本,因为它是无效的json,在我的编辑中我修复了它 { "Actor":[ { "personName":"Shashi Kapoor", "characterName":"Prem" }, {
{
"Actor":[
{
"personName":"Shashi Kapoor",
"characterName":"Prem"
},
{
"personName":"Sharmila Tagore",
"characterName":"Preeti"
},
{
"personName":"Shatrughan Sinha",
"characterName":"Dr. Amar"
}
]
}
列的名称为xyz,我有一个相应的content\u id
我需要检索包含Actor&personName=Sharmila Tagore的内容
我尝试了许多查询,在这两个查询中,很可能得到查询,但仍然没有得到
SELECT content_id
FROM content_table
WHERE cast_and_crew #>> '{Actor,personName}' = '"C. R. Simha"'
应使用在嵌套jsonb数组中搜索:
select content_id, value
from content_table,
lateral jsonb_array_elements(cast_and_crew->'Actor');
content_id | value
------------+-----------------------------------------------------------------
1 | {"personName": "Shashi Kapoor", "characterName": "Prem"}
1 | {"personName": "Sharmila Tagore", "characterName": "Preeti"}
1 | {"personName": "Shatrughan Sinha", "characterName": "Dr. Amar"}
(3 rows)
列值的类型为jsonb,因此可以对其使用->>运算符:
select content_id, value
from content_table,
lateral jsonb_array_elements(cast_and_crew->'Actor')
where value->>'personName' = 'Sharmila Tagore';
content_id | value
------------+--------------------------------------------------------------
1 | {"personName": "Sharmila Tagore", "characterName": "Preeti"}
(1 row)
注意,如果您使用的是json而不是jsonb,那么当然要使用json_数组_元素。您的json中实际上有一个错误,是打字错误还是真的错了?不确定我是否理解您的要求。发布一个期望的结果,并向我们展示您确实首先尝试了一些东西。如果没有,下面是关于json的格式我尝试了这两种可能的查询但是仍然没有得到..1从内容表中选择内容id,其中演员和剧组>>{Actor,personName}='C.R.Simha'2从内容表中选择演员和剧组->>'content\u id'作为内容id,演员和剧组->'Actor'>'personName'='C.R.Simha'。非常感谢
select content_id, value
from content_table,
lateral jsonb_array_elements(cast_and_crew->'Actor')
where value->>'personName' = 'Sharmila Tagore';
content_id | value
------------+--------------------------------------------------------------
1 | {"personName": "Sharmila Tagore", "characterName": "Preeti"}
(1 row)