如何用SQL的LIKE运算符检索姓氏第3位及之后含'r'的员工数据
解决MySQL中检索姓氏第3位及之后含'r'的员工数据问题
你的语句SELECT * FROM employees WHERE last_name LIKE "__r%"的问题在于,__r%仅匹配**前两位任意字符、第三位固定为'r'**的姓氏,无法覆盖'r'出现在第4位及之后的情况。
要实现需求,有两种简单的写法:
方法1:调整LIKE匹配模式
直接修改通配符组合,确保'r'可以出现在第3位及之后的任意位置:
SELECT * FROM employees WHERE last_name LIKE '__%r%';
__:匹配姓氏的前两个任意字符%r%:匹配包含'r'的任意后续字符序列,这样不管'r'在第3位还是更靠后的位置,都会被命中。
方法2:使用SUBSTRING函数(更直观)
通过提取姓氏从第3位开始的子串,再判断该子串是否包含'r':
SELECT * FROM employees WHERE SUBSTRING(last_name, 3) LIKE '%r%';
这种写法逻辑更清晰,直接针对"第3位及之后的内容"做匹配,适合初学者理解。
注意:两种写法都会自动过滤掉长度不足3位的姓氏(因为这类姓氏不存在第3位及之后的字符,自然不会包含'r')。
内容的提问来源于stack exchange,提问作者gosiia
相关产品推荐
相关产品推荐

