如何在JSON Postgres数据类型列中搜索特定字符串?

时间:2017-08-23 21:23:51

标签: json postgresql

我在名为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
               }
            }
         ]
      }
   }
]




1 个答案:

答案 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