如何查询JSON字段以在JSON的所有字段中搜索?
表
id | JSON
--------------------------
1 | {"name":"toto","age":25,"surname":"toto2"}
我想查询JSON的每个字段,因为我编写了一个全局搜索函数,我需要举例来返回包含" toto"在其JSON中。
我设法在具有OPEN_JSON功能的SqlServer 2016中完成。
这是我的代码
SELECT DISTINCT *
FROM ObjectsTable
CROSS APPLY OPENJSON([JSON]) as tbValues
WHERE tbValues.value like '%toto%'
我需要在Postgres做同样的事情。
答案 0 :(得分:4)
在Postgres中基本相同,但cross apply
在SQL标准和Postgres中是cross join lateral
select o.id, t.*
from objectstable o
cross join lateral json_each_text(o.json) as t(k,val)
where t.val like '%toto%'