如何在SQL的LIKE语句中匹配下划线'_'?
正确查询以L_开头的SQL语句
- 你的第一条语句
select * from testtable where data_name like 'L\_'只匹配**完全等于"L_"**的字符串,所以如果数据里没有恰好是"L_"的记录,自然返回空结果。 - 第二条语句
select * from testtable where data_name like 'L__%'中,下划线_是LIKE语句的通配符(匹配任意单个字符),所以L__%实际是匹配所有以L开头且后面至少有两个任意字符的字符串,这才会返回所有L开头的数据,不符合你的需求。
正确写法
要匹配以"L_"开头的字符串(即首两位是L和下划线,后面可以有任意字符或无),需要对下划线转义后加上通配符%:
select * from testtable where data_name like 'L\_%'
如果你的数据库转义规则不同(比如部分数据库默认不支持\转义),可以显式指定转义字符,兼容性更好:
select * from testtable where data_name like 'L!_%' escape '!'
如果只是要匹配**恰好等于"L_"**的记录,你的第一条语句是正确的,说明数据中不存在这类记录。
内容的提问来源于stack exchange,提问作者Pratiksha
相关产品推荐
相关产品推荐

