使用PostgreSQL在所有JSON字段中搜索

时间:2017-06-09 16:00:34

标签: sql json postgresql

如何查询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做同样的事情。

1 个答案:

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