首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >搜索MySQL中包含反斜杠的数据

搜索MySQL中包含反斜杠的数据
EN

Stack Overflow用户
提问于 2012-02-14 12:09:40
回答 3查看 1.7K关注 0票数 0

在数据库中,我在字段调用描述中存储了一些文本,保存在数据库中的字符串的值是Me\You "R'S'" %,这是查询数据库命令行时的结果。

现在,在一个网页上,我有一个函数,它搜索这个字段如下:

,其中的描述像'%$searchstring%‘

因此,当$searchstring被清除时,如果我正在搜索Me\You,反斜杠将得到转义,我的查询如下:

中的描述,比如‘%Me\You’

但是它什么也不回。

奇怪的是,当我搜索我\你或我\\你(所以两个或三个反斜杠,但不少于或不再)时,它将返回我期望的一个反斜杠的结果。

当查询结果命令行时,它不会返回以下结果:

中的描述,比如‘%Me\You’

或者当我用两到三个反斜杠。

但是,如果使用4-7反斜杠,它将返回结果,例如:

中的描述,比如‘%Me\’

将返回字符串,即Me\You "R'S'" %

有人知道发生这种事的原因吗?谢谢

EN

回答 3

Stack Overflow用户

发布于 2012-02-14 12:21:44

Note

因为MySQL在字符串中使用C转义语法(例如,“\n”来表示换行符),所以必须将您在类似字符串中使用的任何“\”加倍。例如,要搜索“\n”,请将其指定为“\\n”。要搜索“\”,请将其指定为“\\\\”;这是因为反斜杠由解析器删除一次,在模式匹配时再删除一次,留下一个反斜杠进行匹配。

来源:http://dev.mysql.com/doc/refman/5.1/en/string-comparison-functions.html#operator_like

票数 2
EN

Stack Overflow用户

发布于 2012-02-14 12:21:54

阅读此Need to select only data that contains backslashes in MySQL以了解如何使用双反斜杠转义。您还可以在MySQL模式下运行NO_BACKSLASH_ESCAPES (http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html#sqlmode_no_backslash_escapes)

票数 0
EN

Stack Overflow用户

发布于 2013-11-07 23:02:57

虽然是一个旧的post,但是您可以使用替换函数来将反斜杠更改为另一个字符:类似于WHERE子句中的内容,可以绕过这个限制。例如:将“您的字段”替换为"You-Me%“。

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9276619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档