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

SQL及JavaScript UDF实现Contains与NotContains匹配方法咨询

SQL字符串包含判断实现方案

SQL原生完全支持你说的包含/不包含校验需求,无需额外扩展即可实现,具体实现方法如下:

1、校验固定字符串“ABC”是否包含在Column1字段中

通用实现(所有数据库兼容)

使用LIKE模糊匹配语法即可:

  • 包含判断:
SELECT * FROM 你的表名 WHERE Column1 LIKE '%ABC%';

其中%是通配符,代表匹配任意长度的任意字符

  • 不包含判断:
SELECT * FROM 你的表名 WHERE Column1 NOT LIKE '%ABC%';

不同数据库专属更高效的实现

  • MySQL/OceanBase/Oracle:用INSTR函数,性能优于LIKE(无通配符解析开销)
    -- 包含
    SELECT * FROM 你的表名 WHERE INSTR(Column1, 'ABC') > 0;
    -- 不包含
    SELECT * FROM 你的表名 WHERE INSTR(Column1, 'ABC') = 0;
    
  • SQL Server:用CHARINDEX函数,若要使用自带的CONTAINS全文检索函数,需要提前给Column1创建全文索引
    -- 普通包含判断
    SELECT * FROM 你的表名 WHERE CHARINDEX('ABC', Column1) > 0;
    -- 全文检索场景的CONTAINS用法(需要全文索引)
    SELECT * FROM 你的表名 WHERE CONTAINS(Column1, 'ABC');
    SELECT * FROM 你的表名 WHERE NOT CONTAINS(Column1, 'ABC');
    
  • PostgreSQL:用POSITION函数
    SELECT * FROM 你的表名 WHERE POSITION('ABC' IN Column1) > 0;
    

2、校验Column1的取值是否包含在Column2字段中

逻辑和固定字符串判断一致,只需把固定搜索值替换为字段名即可,注意通配符要和字段值拼接:

通用实现

-- 包含:Column1的值在Column2中存在
SELECT * FROM 你的表名 WHERE Column2 LIKE CONCAT('%', Column1, '%');
-- 不包含:Column1的值在Column2中不存在
SELECT * FROM 你的表名 WHERE Column2 NOT LIKE CONCAT('%', Column1, '%');

不同数据库专属实现

  • MySQL/Oracle:
    SELECT * FROM 你的表名 WHERE INSTR(Column2, Column1) > 0;
    
  • SQL Server:
    SELECT * FROM 你的表名 WHERE CHARINDEX(Column1, Column2) > 0;
    

如果你要判断的场景存在特殊字符(比如%、_这类LIKE的原生通配符),优先用INSTR/CHARINDEX这类函数,不会出现转义问题,判断逻辑更准确。

自定义扩展方案

如果原生函数满足不了复杂的判断需求(比如多关键词规则匹配、大小写特殊规则校验等),主流数据库都支持自定义函数实现:

  • Snowflake、BigQuery、安装了plv8扩展的PostgreSQL都支持JavaScript UDF,示例如下:
-- 自定义包含判断JS UDF
CREATE OR REPLACE FUNCTION CUSTOM_CONTAINS(target_str STRING, search_str STRING)
RETURNS BOOLEAN
LANGUAGE JAVASCRIPT
AS '
return TARGET_STR.includes(SEARCH_STR);
';
-- 调用示例
SELECT * FROM 你的表名 WHERE CUSTOM_CONTAINS(Column2, Column1) = TRUE;
  • 其他数据库也支持对应语言的UDF,比如Oracle支持Java UDF、SQL Server支持.NET UDF、MySQL支持C/C++ UDF,均可按需实现自定义包含规则。

内容的提问来源于stack exchange,提问作者ADom

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:48:02