如何编写SQL条件语句判断字符串是否属于数组并添加WHERE过滤条件
SQL判断元素是否在集合/数组中的条件写法
你给出的示例用IN操作符就可以实现,注意标准SQL中IN后面跟随的取值集合需要用小括号包裹,而不是大括号,修正后的示例写法如下:
SELECT * FROM `table` WHERE id = 'XX' AND tag IN ('one', 'two', 'three');
上述写法适用于tag是普通字段,需要匹配多个离散值的场景。
如果你的需求是判断某个值是否存在于数组类型的字段中,不同数据库的语法存在差异,常见数据库的写法如下:
- MySQL:使用
JSON_CONTAINS函数,假设数组字段名为tag_array:SELECT * FROM `table` WHERE JSON_CONTAINS(tag_array, '"one"'); - PostgreSQL:支持两种常用写法:
-- 写法1:使用@>包含运算符 SELECT * FROM "table" WHERE tag_array @> ARRAY['one']::varchar[]; -- 写法2:使用ANY函数 SELECT * FROM "table" WHERE 'one' = ANY(tag_array); - ClickHouse:使用内置
has函数:SELECT * FROM `table` WHERE has(tag_array, 'one');
内容的提问来源于stack exchange,提问作者ccd
相关产品推荐
相关产品推荐

