select *
from user
where user_name like concat(‘%‘,‘_‘,‘%‘)
分析:‘_‘:相当于一个占位符,表示占用一个字符,会匹配包含一个字符的所有记录
其他特殊字符:‘%‘:会查询出所有记录
第一层:使用 ‘/‘ 将特殊字符(比如:‘‘、‘%‘)转义掉,即:使用 ‘/‘ 替换 ‘_‘,使用 ‘/%‘ 替换 ‘%‘
第二层:使用 ‘/‘ 将 ‘/‘转义掉,即使用 ‘//‘ 替换掉 ‘/‘
* 使用双斜杠替换单斜杠是因为我们上面为转义特殊字符而引入单斜杠,所以我们需要把本身的单斜杠转换为双斜杠使用(有一点点绕,也可以结合下面的SQL理解)
escape ‘/‘ :MySQL中一种语法,表示/之后的符号不被当做通配符使用
转义特殊字符
select *
from user
where user_name like concat(‘%‘,‘/%‘,‘%‘) escape ‘/‘ -- 就是指我要查询user_name中包含 % 的记录
select *
from user
where user_name like concat(‘%‘,‘///%‘,‘%‘) escape ‘/‘ -- 查询包含 ‘/%‘的所有记录
原文:https://www.cnblogs.com/TreeInWind/p/13346098.html