如何过滤Postgresql中的JSON列?

时间:2019-10-08 08:24:48

标签: sql json postgresql

让我们说我们有一个简单的表格,

  • id-用户ID
  • 房间-用户正在以JSON类型搜索的房间数。
id rooms
1 ["3.0","4.0"]
2 ["3.0"]
3 ["1.0"]

如何过滤正在搜索3个房间的用户ID?

我知道这样的代码:

SELECT
    id
FROM 
    example_column
WHERE
rooms::text LIKE '%3.0%'

正在工作,但是我正在寻找更温和的方法。

1 个答案:

答案 0 :(得分:5)

您可以使用“存在” ? operator来测试数组中的元素:

SELECT id
FROM the_table
WHERE rooms ? '3.0';

该运算符仅适用于jsonb值,如果您确实在使用json列,则需要对其进行强制转换:

WHERE rooms::jsonb ? '3.0';