如题,当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后边的字符串除了会在语法解析时转义一次外,还会在正则匹配时进行第二次的转义。因此如果期望最终匹配到"\",就要反转义两次,也即由"\"到"\\"再到"\\\\"。

---------------------
作者:black-heart
来源:CSDN
原文:https://blog.csdn.net/mrqingyu/article/details/81004580
版权声明:本文为博主原创文章,转载请附上博文链接!

like 内容转义的更多相关文章

  1. atitit.js的 字符串内容 转义  js处理html

    atitit.js的 字符串内容 转义  js处理html 1. js处理html的问题 1 2. js的 字符串内容 转义 1 2.1. 处理流程 1 3. 下面的表格列出了其余的特殊字符,这些特殊 ...

  2. Thinkphp kindeditor 内容转义

    参考了:[解决]ThinkPHP整合Html编辑器时出现自动转义的问题 遇到问题也是保存到数据库中的内容,会转义成“\"” 使用 $data['content'] = stripslashe ...

  3. Shell中EOF内容转义

    1.在$符号前面加反斜杠,如: cat > test.sh <<EOF \$test EOF 如果不加,将转成实际的值. 2.给EOF加个双引号,如: cat > test.s ...

  4. Shell中 heredoc 内容转义

    1.在$符号前面加反斜杠,如: cat > test.sh <<EOF \$test EOF 如果不加,将转成实际的值. 2.给EOF加个双引号,如: cat > test.s ...

  5. 【ThinkPHP学习】ThinkPHP自己主动转义存储富文本编辑器内容导致读取出错

    RT. ThinkPHP的conf文件里的Convention.php有一个配置选项 'DEFAULT_FILTER' => 'htmlspecialchars', // 默认參数过滤方法 用于 ...

  6. 基于SqlSugar的开发框架循序渐进介绍(21)-- 在工作流列表页面中增加一些转义信息的输出,在后端进行内容转换

    有时候,为了给前端页面输出内容,有时候我们需要准备和数据库不一样的实体信息,因为数据库可能记录的是一些引用的ID或者特殊字符,那么我们为了避免前端单独的进行转义处理,我们可以在后端进行统一的格式化后再 ...

  7. PHP 5.4 已废弃 magic_quotes_gpc,PHP安全转义函数详解(addslashes 、htmlspecialchars、htmlentities、mysql_real_escape_string、strip_tags)

    1. addslashes() addslashes()对SQL语句中的特殊字符进行转义操作,包括(‘), (“), (), (NUL)四个字符,此函数在DBMS没有自己的转义函数时候使用,但是如果D ...

  8. PHP常用的转义函数

    1. addslashes addslashes对SQL语句中的特殊字符进行转义操作,包括(‘), (“), (), (NUL)四个字符,此函数在DBMS没有自己的转义函数时候使用,但是如果DBMS有 ...

  9. 【python】正则表达式中的转义问题

    encode('string-escape') 解决 比如想匹配'\x0e\x0a'中的'\x'后的内容,这里希望把'\x0e'作为一个字符串,那么其中的\应该被转义. 未加转义的正则: p = '( ...

随机推荐

  1. vi编程技巧:

    h #向上j #向左k #向右l #向下a #插入o #插入一行,并在行首开始O #在当前行前插入一行,并在行首开始dd #删除当前行x #删除当前字符yy #复制当前行p #在当前行后面粘贴P #在 ...

  2. opencv使用总结

    在resize矩阵时出现报错 (-215) func != 0 in function cv::resize" 很可能是矩阵未设置为float,应该在读入后转换类型 item = item. ...

  3. 登录获取token,token参数关联至所有请求的请求体内

    问题描述: 有些系统接口判断用户是否登录,是校验登录接口成功后传的token值,也就是请求系统所有接口时,前端传参必带登录成功后接口返回的token,后台以此检验是否过期或是否有登录.所有接口都依赖登 ...

  4. angular 引入编辑器遇到的各种问题。。。

    1.项目中找不到angular-cli.json,也找不到angular.json 2. 3.

  5. mysql 查询正在执行的进程-亲试ok

    命令:show processlist 每一列的含义和用途: 第一列 id,不用说了吧,一个标识,你要kill一个语句的时候很有用. 第二列 user列,显示单前用户,如果不是root,这个命令就只显 ...

  6. C语言博客作业05——指针

    1.本章学习总结 1.1思维导图 1.2本章学习体会及代码量 1.2.1学习体会 可能因为之前数组那块儿的作业拖得太久了,以至于我觉得指针学的好快,还没反应过来就教完了,然后一开始做题的时候,就是一脸 ...

  7. 【C/C++】数组 & 指针

    int main() { ]; ]; ][]; ]; ]; ]; ][]; cout << sizeof(a) << endl; cout << sizeof(pa ...

  8. 学号 2018-2019-20175212 童皓桢《Java程序设计》第5周学习总结

    学号 2018-2019-20175212 <Java程序设计>第5周学习总结 教材学习内容总结 接口 声明接口: interface 名字: 接口体:接口体中只有常量无变量,只有抽象方法 ...

  9. 【还是回来了】博客搬家--https://cangbean.github.io

    还是弄了个自己的地址:https://cangbean.github.io 想记录下,防止万一以后迁移不好弄 想练习markdown写作 折腾而已 以后不再博客园记录东西了,但是还是会回来看看的

  10. 终端的rz命令,覆盖原文件。

    不覆盖:rz 覆盖 同名文件:rz -y