Querying Postgres SQL JSON Column



我在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语句,以返回start_date和end_date以及where语句,其中"event_type"类似于"active"?

尝试的查询:

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来完成此操作,查看名为"value"的结果列。您可以将函数调用作为横向联接放在FROM列表中(但由于它是一个函数调用,因此不需要指定lateral关键字,它是隐式的(

select value->>'START_DATE' from data, jsonb_each(json_col) 
where value->>'event_type' like '%active%';

最新更新