MySQL like查询语句中,结果包含反斜杠 \ 字符的,需要替换成四个反斜杠 \\\\
2023-09-27 14:26:42 时间
当SQL语句中使用Like查询,且期望匹配的结果中含有"\"的,应当把"\"替换为"\\\\"。 比如数据库中text字段有以下三行: id text 1 au1224 su5b9e1u9a8c 2 \24\a su5b9e1u9a8c 3 \24\\a su5b9e1u9a8c 当我们使用下面这三种方式查询时,都会得到id 为1,2,3三行,原因后面会讲。 select * from test_table where text like "%\24%"; select * from test_table where text like "%\\24%"; select * from test_table where text like "%\\\24%"; 只有像下面这样使用四个反斜杠"\\\\"查询时,才会得到期望的包含"\24"的结果(id为2、3的两行)。 select * from test_table where text like "%24\\\\%"; 进一步,如果期望查询到的结果更准确,比如只得到id为2的第二行,应该像下边这样查询。 select * from test_table where text like "%24\\\\a%"; 同理,只得到id为3的第三行,匹配两个反斜杠"\\",应该使用八个反斜杠"\\\\\\\\": select * from test_table where text like "%24\\\\\\\\a%"; 原因其实很简单,在mysql中,反斜杠在字符串中是转义字符,在进行语法解析时会进行一次转义, 所以当我们在insert字符时,insert "\\" 在数据库中最终只会存储"\"。而在mysql的like语法中, like后边的字符串除了会在语法解析时转义一次外,还会在正则匹配时进行第二次的转义。因此如果期望最终匹配到"\",就要反转义两次,也即由"\"到"\\"再到"\\\\"。
相关文章
- Mysql加锁过程详解(4)-select for update/lock in share mode 对事务并发性影响
- Mysql加锁过程详解(6)-数据库隔离级别(2)-通过例子理解事务的4种隔离级别
- mysql中,通过json_insert函数向json字段插入键值?json_insert函数的使用?
- 对比Pandas轻松理解MySQL分组聚合的实现原理
- MySQL 性能调优的10个方法
- 在 MySQL 中模拟外部联接 (LEFT、RIGHT、INNER JOIN、OUTER JOIN)
- RDS for MySQL 字符序(collation)引发的性能问题
- MySQL 认证密码相关
- MySQL 窗口函数 & MySQL8新特性
- mysql分组查询n条记录
- 怎么解决Mysql的超大分页
- mysql查询某一个字段是否包含中文字符
- mysql 手册关于修改列字符编码的一个bug
- mysql set names 命令和 mysql 字符编码问题
- 修改mysql字符编码出现Job failed to start解决办法
- MySQL下查看和赋予权限
- 深入理解mysql参数
- php过滤文字中的表情字符和mysql服务端对emoji的支持
- LVS+MYCAT+读写分离+MYSQL主备同步部署手册