mysql like模糊查询时转义通配符

由于昨晚时间管理的关系,早上又被无情的闹钟叫了起来,身体无比的困倦,于是想着早上划划水算了。正当吃着早餐刷着手机的时候,测试突然提了个bug过来,参数过滤功能没有起作用!!!
放下手机后看了一下bug,发现过滤的条件是"aaa_",想起我们的过滤就是简单的模糊查询,也就是 %输入的字符串% 。然后这里输入了aaa_,那么后台查询是条件是 %aaa_% ,因为下划线是通配符,所以过滤条件就跟**%aaa%**是一样的了。原因找到了,通配符!!

我们都知道,sql中的like语法是模糊查询,而模糊查询中又有通配符,作用就是匹配符合条件的数据。常见有如下通配符

通配符作用
%匹配任意数量的字符
_表示一个字符,如果是中文的话匹配一个汉字
[^a-d]表示不在字符集中
[a-d]表示在字符集的范围

其中mysql支持%和_。

这个时候我们想要忽略 % 或者 _ 的作用的话,就要用到关键字 Escape

我们在like的条件中,下划线 _ 前面加上 \ ,比如 “aaa\_”,然后后面加上escape “”
也就是这样
select * from tbl where col like “%aaa\_%” escape "\"
这样就会匹配aaa_XXX了。

Escape 关键字和"\"配合使用就是将通配符转义的意思,即 \ 后面的字符当成普通字符对待,注意!只是后面的一个字符!!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值