我有一个表,其中列允许特殊字符,如'/'正斜杠和'\'反斜杠.
现在当我试图从表中搜索这些记录时,我无法得到这些记录.
例如: abc\def或abc/def我正在生成类似的搜索查询
select * from table1_1 where column10 like '%abc\def%'
Run Code Online (Sandbox Code Playgroud)
它返回0行,但实际上存在1个记录.在这种情况下如何编写查询,请告诉我.
谢谢.
xch*_*onx 15
巴马尔部分正确(所以+1),
所以诀窍是双重逃避只有反斜杠,因为字符串转义只需要一个转义.
例如
'只需要转义一次LIKE '%\'%'\您需要双重转义LIKE '%\\\\%'\'然后LIKE '%\\\\\'%'(5个反斜杠)解释来源 摘录:
因为MySQL在字符串中使用C转义语法(例如,"\n"表示换行符),所以必须将在LIKE字符串中使用的任何"\"加倍.例如,要搜索"\n",请将其指定为"\n".要搜索"\",请将其指定为"\\"; 这是因为反斜杠被解析器剥离一次,并且在进行模式匹配时再次剥离,留下一个反斜杠来匹配.
Bar*_*mar 11
在MySQL中,这适用于:
select * from Table1
where column10 like '%abc\\\\def%'
Run Code Online (Sandbox Code Playgroud)
反斜杠是字符串和LIKE模式的转义前缀.因此,您需要将其加倍一次LIKE,并再次使用字符串文字语法.