如何编写SQL查询排除首名以y结尾的销售人员且不使用LIKE关键字
排除首名以y结尾销售人员的SQL实现方案
实现逻辑
核心思路是通过字符串截取函数提取首名后比对末尾字符,或者用正则作为筛选条件匹配,全程不修改返回的Emp Name字段值,不会丢失原有逗号。
可用实现方案
方案1:字符串截取比对(兼容性最好,不需要数据库支持正则)
以不同数据库的常见语法为例:
- MySQL 写法
SELECT * FROM 你的表名 WHERE RIGHT(SUBSTRING_INDEX(`Emp Name`, ',', 1), 1) <> 'y';
- PostgreSQL / Oracle 12c+ 写法
SELECT * FROM 你的表名 WHERE SUBSTR(SPLIT_PART("Emp Name", ',', 1), -1) != 'y';
逻辑说明:先截取Emp Name中逗号前的首名部分,再取首名最后一个字符和y比对,不符合的就排除,筛选逻辑不会修改返回的字段内容。
方案2:正则匹配筛选
如果你的数据库支持正则函数,直接将正则判断放在WHERE条件中即可,不要在SELECT字段中处理就不会修改原字段格式:
SELECT * FROM 你的表名 WHERE NOT REGEXP_LIKE(`Emp Name`, '^[^,]+y,');
逻辑说明:正则规则匹配「字段开头到第一个逗号前的内容以y结尾」的记录,加NOT即可排除对应记录,完全不影响返回的Emp Name字段原有格式。
效果说明
以上两种方案均满足以下要求:
- 未使用
LIKE关键字 - 不会修改返回的
Emp Name字段值,原有逗号完整保留 - 可以准确筛选排除所有首名以y结尾的记录
内容的提问来源于stack exchange,提问作者oharujyu
相关产品推荐
相关产品推荐

