我有一个student表,其中有description列。现在,我希望选择在description中具有'\‘(反斜杠)的所有记录。现在,如果我是正确的,根据特殊字符序列,"\“代表"\”。
但是,如下查询不起作用:
SELECT * FROM student WHERE description LIKE '%\\%'以下查询正在进行中:
SELECT * FROM student WHERE description LIKE '%\\\%'
SELECT * FROM student WHERE description LIKE '%\\\\%'所以我不知道MySql是如何评估它的。
发布于 2013-07-30 10:20:47
这对我来说很管用:
SELECT * FROM student WHERE description LIKE '%\\\%'您需要两个级别的转义:一个用于字符串文本,另一个用于类似的模式。
这也适用于:
SELECT * FROM student WHERE description LIKE '%\\\\%';第一个方法可以工作,因为\%不是转义序列,所以反斜杠保留在其中。第二个操作是因为第二个\\是另一个转义反斜杠,它变成了一个反斜杠。
发布于 2013-07-30 10:24:14
因为MySQL在字符串中使用C转义语法(例如,“\n”来表示换行符),所以必须将您在类似字符串中使用的“\”加倍。例如,要搜索“\n”,请将其指定为“\n”。要搜索“\”,请将其指定为“\\”;这是因为反斜杠由解析器删除一次,在模式匹配时再进行一次反斜杠,只留下一个反斜杠要匹配。
作为仅保留“解析器反斜杠剥离”的解决办法,请使用以下语法:
select * from T where s like "%\\%" escape "#";(我在这里使用#,但查询字符串中不存在的任何其他字符都可用于转义)。
发布于 2013-07-30 10:22:09
参见这里的第一个“注意事项”:http://dev.mysql.com/doc/refman/5.6/en/string-comparison-functions.html
因为MySQL在字符串中使用C转义语法(例如,“\n”来表示换行符),所以必须将您在类似字符串中使用的“\”加倍。例如,要搜索“\n”,请将其指定为“\n”。要搜索“\”,请将其指定为“\\”;这是因为反斜杠由解析器删除一次,在模式匹配时再进行一次反斜杠,只留下一个反斜杠要匹配。
https://stackoverflow.com/questions/17944208
复制相似问题