我有一个名为params
的列,存储在名为reports
的表中,其中包含JSON。
我需要找出哪些行在JSON数组中包含文本'authVar'。 我不知道文本可能出现的路径或级别。
我只想使用标准的类似运算符搜索JSON。
类似于:
SELECT * FROM reports
WHERE params LIKE '%authVar%'
我已经搜索、谷歌并阅读了Postgres文档。我对JSON数据类型不是很了解,认为自己可能错过了一些容易的东西。
JSON的格式大致如下。
[
{
"tileId":18811,
"Params":{
"data":[
{
"name":"Week Ending",
"color":"#27B5E1",
"report":"report1",
"locations":{
"c1":0,
"c2":0,
"r1":"authVar",
"r2":66
}
}
]
}
}
]
where jsonb_path_exists(params, '$.** ? (@.type() == "string" && @ like_regex "authVar")')
和where params @? '$.** ? (@.type() == "string" && @ like_regex "string" flag "i")'
? - Marius Lian