如何在MySQL中使用LIKE子句查询匹配的员工grade等级数据
你当前的写法存在语法错误:LIKE 关键字不支持直接传入多个值列表匹配,你写的WHERE GRADE like ("L0007", "L0008", "L0009")无法正常执行,以下是对应场景的解决方案:
场景1:需要精准匹配固定的几个grade值
不需要用LIKE,直接用IN运算符即可在单条语句内实现需求:
SELECT DISTINCT DESIG_NAME FROM employees WHERE GRADE IN ('L0007', 'L0008', 'L0009');
场景2:需要模糊匹配多个规则的grade值(适配level7、level8这类格式需求)
有两种常用实现方式:
方式1:多LIKE条件拼接
用OR连接多个LIKE模糊匹配规则,例如匹配所有grade末尾为7、8、9的记录:
SELECT DISTINCT DESIG_NAME FROM employees WHERE GRADE LIKE '%7' OR GRADE LIKE '%8' OR GRADE LIKE '%9';
你可以根据实际的匹配规则调整通配符位置:
%代表匹配任意长度的任意字符_代表匹配1个任意字符
比如要匹配L开头、总长度5位、末尾为7的grade,可以写LIKE 'L___7'(3个下划线对应中间3位任意字符)。
方式2:使用正则匹配(写法更简洁)
用MySQL内置的REGEXP运算符实现多规则模糊匹配,例如匹配所有grade末尾为7、8、9的记录:
SELECT DISTINCT DESIG_NAME FROM employees WHERE GRADE REGEXP '[789]$';
语句中[789]代表匹配7、8、9中的任意一个字符,$代表匹配字符串末尾,刚好适配level7、level8这类末尾为等级数字的格式。
内容的提问来源于stack exchange,提问作者Khan Aaftab
相关产品推荐
相关产品推荐

