You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 00:27:05