mysql反斜杠多次转义简述

概述

通常在业务中会用正则/like去匹配一些数据.如果数据中有反斜杠,或者是用的正则语句。

那么在写sql的时候就需要转义下反斜杠,转义的时候有几个隐藏问题需要注意。

使用like做where条件

如下使用like要查询这两条数据的时候,需要用8个反斜杠。
首先在经过mysql语法解析器的时候会转义一下,第一个反斜杠被当做转义字符,然后会去掉
然后在like执行的时候又会解析一下转义字符

总共转义了2次,也就是4个反斜杠经过2次转义后,只剩下2个反斜杠。

如果where中直接使用=,那么只会经过语法解析器的转义

mysql> SELECT * from student where text like '%\\\\\\\\%';
+----+-----------------------+
| id | text                  |
+----+-----------------------+
|  4 | D:\\666\\7777777     |
|  5 | D:\\123\\456444      |
+----+-----------------------+
2 rows in set (0.00 sec)

where中直接使用=

mysql> SELECT * from student where text = '\\\\';
+----+------+
| id | text |
+----+------+
|  7 | \\   |
+----+------+
1 row in set (0.00 sec)

在select中使用regexp

如下demo中,只经过了mysql的语法解析器的转义,所以只用转义1次即可

select
'110.500' regexp '^\\d+(\\.0+){0,}$',
'110.0' regexp '^\\d+(\\.0+){0,}$',
'110' regexp '^\\d+(\\.0+){0,}$'

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值