我有一个表,其中有一列名为“settings”,类型为 jsonb(可为空),模式如下:
[
{
att1: "test"
"start": 2019-02-01 00:00:00
"end": 2019-02-20 00:00:00
},
{
att1: "test2"
"start": 2019-03-01 00:00:00
"end": 2019-03-15 00:00:00
}
]
表格示例:
id,settings
1,"[{"end": "2019-02-01 00:00:00"},{"2019-02-05 00:00:00"}]"
2,"[{"end" : '2019-02-20 00:00:00'}]"
我想在特定时间戳以上的数组 jsonb 中找到所有具有“结束”字段的记录
例如,如果我查询“end”>“2019-02-19 00:00:00”,我希望得到记录 2。
请指教!
最佳答案
你可以试试这段代码:
SELECT *
FROM test_table tt
WHERE exists(
SELECT *
FROM jsonb_array_elements(tt.settings) AS settings
WHERE (settings ->> 'start') > '2019-02-19 00:00:00'
);
关于postgresql - 如何按对象数组的 jsonb 字段中的特定属性过滤记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54538040/