SQL中NOT IN运算符查询不生效,结果包含待排除的城市记录
问题原因
- 拼写错误:过滤条件中写的待排除城市名为
Suart,和表中实际存储的城市名Surat拼写不符(字母u、r顺序颠倒),对应行无法被匹配到排除规则,仍然保留在结果中。 - 大小写敏感:默认场景下绝大多数SQL数据库的字符串比较对大小写敏感,过滤条件中写的待排除城市名为首字母大写的
Vapi,但表中实际存储的是全小写的vapi,二者无法匹配,因此对应行也没有被排除。
修复方案
你可以选择以下任意一种方案修复,优先推荐第一种适配性更强:
- 统一大小写后比较,同时修正拼写错误,这种写法可以兼容表中任意大小写格式的城市名存储:
SELECT * FROM Emp WHERE LOWER(City) NOT IN ('surat', 'vapi');
- 直接修正拼写和大小写,和表中存储的实际值完全匹配即可:
SELECT * FROM Emp WHERE City NOT IN ('Surat', 'vapi');
内容的提问来源于stack exchange,提问作者Riddhi Vekariya
相关产品推荐
相关产品推荐

