我在名为params
的表中有一个名为reports
的列,其中包含JSON。
我需要查找哪些行包含文字' authVar' JSON数组中的任何位置。我不知道文本可能出现的路径或级别。
我想用标准的运算符搜索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
}
}
]
}
}
]

答案 0 :(得分:14)
可以递归地遍历未知的json结构,但它会相当复杂和昂贵。我会提出应该运作良好的蛮力方法:
select *
from reports
where params::text like '%authVar%';
-- or
-- where params::text like '%"authVar"%';
-- if you are looking for the exact value