SQL查询如何排除指定匹配模式同时保留符合该模式的特定值
问题原因
你修改后的语句逻辑存在冲突:Var NOT LIKE '4%' 代表排除所有4开头的值,而你后面用AND连接三个4开头值的匹配条件,两个条件不可能同时满足,所以查询无结果。
正确实现方案
只需要把逻辑运算符换成OR,同时调整括号优先级保证逻辑正确即可,推荐用IN简化多值匹配的写法:
SELECT Var FROM TABLE WHERE Var NOT LIKE '4%' OR Var IN ('40030', '40100', '40130')
逻辑说明
- 优先匹配所有非4开头的数值,符合原有查询的要求
- 额外追加匹配三个指定的4开头数值,实现新增需求
- 同一个值只会被匹配一次,不会返回重复结果
内容的提问来源于stack exchange,提问作者goku_ssj3
相关产品推荐
相关产品推荐

