我在postgres数据库中具有以下结构的json列(json_col):
{
"event1":{
"START_DATE":"6/18/2011",
"END_DATE":"7/23/2011",
"event_type":"active with prior experience"
},
"event2":{
"START_DATE":"8/20/11",
"END_DATE":"2/11/2012",
"event_type":"active"
}
}
[表结构示例] [1]
我如何在postgres中创建一条select语句,以使用其中“ event_type”(如“ active”)的where语句返回start_date和end_date?
尝试查询:
select person_id, json_col#>>'START_DATE' as event_start, json_col#>>'END_DATE' as event_end
from data
where json_col->>'event_type' like '%active%';
返回空列。
预期回应:
event_start
6/18/2011
8/20/2011
听起来您想取消嵌套json结构,忽略顶级键,而只获取顶级值。您可以使用jsonb_each进行此操作,查看名为“值”的结果列。您可以将函数调用作为横向联接放在FROM列表中(但是由于它是函数调用,因此无需指定LATERAL关键字,它是隐式的)
select value->>'START_DATE' from data, jsonb_each(json_col)
where value->>'event_type' like '%active%';
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句