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

如何检查SQL列不包含指定字符串列表?现有查询逻辑有缺陷

解决方法:筛选不包含指定字符串列表的记录

你的查询逻辑错误在于使用了OR条件——只要记录不包含三个字符串中的任意一个,就会被返回,这和你要同时排除所有包含apple、banana、orange的记录的需求完全不符。

正确写法1:CHARINDEX + AND组合

要确保三个字符串都不在FileNm列中,必须把OR替换成AND:

SELECT *
FROM dbo.File f
WHERE CHARINDEX('apple', f.FileNm) = 0
  AND CHARINDEX('orange', f.FileNm) = 0
  AND CHARINDEX('banana', f.FileNm) = 0

正确写法2:NOT LIKE(更直观)

如果不需要精确匹配字符位置,只是要排除包含目标字符串的记录,用NOT LIKE可读性更强:

SELECT *
FROM dbo.File f
WHERE f.FileNm NOT LIKE '%apple%'
  AND f.FileNm NOT LIKE '%orange%'
  AND f.FileNm NOT LIKE '%banana%'

额外提示

  • CHARINDEX返回目标字符串的起始位置,返回0表示未找到;
  • LIKE中的%是通配符,匹配任意长度的字符(包括0个);
  • 如果需要不区分大小写的匹配,可以用CHARINDEX(LOWER('apple'), LOWER(f.FileNm)),或者调整数据库的排序规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 10:22:02