在数据库中,我在字段调用描述中存储了一些文本,保存在数据库中的字符串的值是Me\You "R'S'" %,这是查询数据库命令行时的结果。
现在,在一个网页上,我有一个函数,它搜索这个字段如下:
,其中的描述像'%$searchstring%‘
因此,当$searchstring被清除时,如果我正在搜索Me\You,反斜杠将得到转义,我的查询如下:
中的描述,比如‘%Me\You’
但是它什么也不回。
奇怪的是,当我搜索我\你或我\\你(所以两个或三个反斜杠,但不少于或不再)时,它将返回我期望的一个反斜杠的结果。
当查询结果命令行时,它不会返回以下结果:
中的描述,比如‘%Me\You’
或者当我用两到三个反斜杠。
但是,如果使用4-7反斜杠,它将返回结果,例如:
中的描述,比如‘%Me\’
将返回字符串,即Me\You "R'S'" %。
有人知道发生这种事的原因吗?谢谢
发布于 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
发布于 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)
发布于 2013-11-07 23:02:57
虽然是一个旧的post,但是您可以使用替换函数来将反斜杠更改为另一个字符:类似于WHERE子句中的内容,可以绕过这个限制。例如:将“您的字段”替换为"You-Me%“。
https://stackoverflow.com/questions/9276619
复制相似问题