在mysql中使用like运算符匹配escape charactres

时间:2015-06-03 11:01:21

标签: mysql

我想将具有转义字符的字符串与表中的特定列匹配。

SELECT * FROM table WHERE col LIKE 'MESSRESTAURANGER AB\\MESSVEGEN 1\\STOCKH';

虽然表中有匹配的数据,但查询结果为空集。但是同样的查询在oracle中运行良好。 mysql有什么问题?

1 个答案:

答案 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”。   要搜索“\”,请将其指定为\\\\;这是因为   反斜杠被解析器剥离一次,并在模式时再次剥离   匹配,留下一个反斜杠匹配。

小提琴http://sqlfiddle.com/#!9/ac46b/9