【发布时间】:2020-04-01 17:12:13
【问题描述】:
我在 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
【问题讨论】:
-
您的查询和错误信息不匹配。
-
感谢您指出这一点。当我更正查询中的 where 语句时(请参阅已编辑的问题),它现在返回空列。
-
#>>运算符需要一个数组作为右手参数,例如json_col #>> '{event1,START_DATE}' -
你想要的输出到底是什么?两个“事件”都有资格成为
active。您要检索哪个开始日期和结束日期?您能否请edit您的问题并添加预期的输出? -
目标是我想在这两个事件中查询 event_type 并有一个指示两个事件的 start_date 的响应。这可能吗?
标签: postgresql jsonb