【发布时间】:2020-08-14 11:36:13
【问题描述】:
有一个包含 jsonb 数据的列的表,我想用多个字段查询这些数据。 jsonb结构如下:
{
"https://example.tld/":
[
{
"content-length": 312,
"path": "page.log",
"redirect": null,
"status": 200
},
{
"content-length": 312,
"path": "pages/",
"redirect": null,
"status": 200
},
...
]
}
我想查询所有状态为 200 的日志文件,所以我做到了
SELECT json_data -> 'path' AS path
FROM table
WHERE json_data->'status' = 200 AND json_data->'path' ILIKE '%.log%'
但是,它不起作用。我开始工作的最接近的变体是如果我将 json 内容转换为文本并搜索日志,但它会返回整个内容。
SELECT *
FROM table
WHERE json_data::text ILIKE '%.log%'
感谢您的帮助!
【问题讨论】:
-
您使用的是哪个 Postgres 版本?
-
(PostgreSQL) 10.12
标签: sql postgresql jsonb