我想将具有转义字符的字符串与表中的特定列匹配。
SELECT * FROM table WHERE col LIKE 'MESSRESTAURANGER AB\\MESSVEGEN 1\\STOCKH';
虽然表中有匹配的数据,但查询结果为空集。但是同样的查询在oracle中运行良好。 mysql有什么问题?
答案 0 :(得分:0)
你错过%
:
SELECT * FROM table WHERE col LIKE '%MESSRESTAURANGER AB\\MESSVEGEN 1\\STOCKH%';
但它应该没有逃避:
SELECT * FROM table WHERE col LIKE '%MESSRESTAURANGER AB\MESSVEGEN 1\STOCKH%';
小提琴http://sqlfiddle.com/#!9/a7ba59/2
修改强>
SELECT * FROM t WHERE n LIKE '%MESSRESTAURANGER AB\\\\\\\\MESSVEGEN 1\\\\\\\\STOCKH%'
因为MySQL在字符串中使用C转义语法(例如,“\ n”到 代表一个换行符),你必须加倍你使用的任何“\” 在LIKE字符串中。例如,要搜索“\ n”,请将其指定为“\ n”。 要搜索“\”,请将其指定为
\\\\
;这是因为 反斜杠被解析器剥离一次,并在模式时再次剥离 匹配,留下一个反斜杠匹配。