让我们说我们有一个简单的表格,
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%'
正在工作,但是我正在寻找更温和的方法。
答案 0 :(得分:5)
您可以使用“存在” ?
operator来测试数组中的元素:
SELECT id
FROM the_table
WHERE rooms ? '3.0';
该运算符仅适用于jsonb
值,如果您确实在使用json
列,则需要对其进行强制转换:
WHERE rooms::jsonb ? '3.0';