搜索MySQL中有特殊字符的字符串值
我在MySQL数据库中有一个表emp,它有列作为名称。在该名称列中,值为'abc \ xyz'。我想搜索这个值。我曾尝试使用下面的查询尝试:搜索MySQL中有特殊字符的字符串值
select * from emp where name like 'abc\xyz';
我也有试过
select * from emp where name like 'abc\xyz' escape '\\';
,但我并没有发现任何输出。你能帮我找到这样的字符串吗?这样的字符串可以在任何位置具有特殊字符。
在此先感谢。
你可以尝试这样的:
select * from emp
where empname like '%abc\\\\xyz%'
从docs:
因为MySQL使用C转义语法的字符串(例如,“\ n”以表示换行符),则必须加倍在LIKE字符串中使用的任何“\”。例如,要搜索“\ n”,请将其指定为“\\ n”。 要搜索“\”,请将其指定为“\\\\”;这是因为反斜杠被解析器剥离了一次,并且当匹配模式匹配时,反斜杠被匹配。
SELECT REPLACE(text,'\\','') FROM tbl
您可以使用替换要删除一些特殊字符:)
这有破坏结果的问题。不推荐 – Phil 2014-09-03 06:37:44
这不是最好的方法,但它可以取代特殊字符 – 2014-09-03 06:41:18
我们可以使用替换功能,但是如果我的特殊字符位于开始或结束位置,它会显示错误。对于例如我试过 select * from emp where replace(name,'\\','')like replace('\ xyz \ abc \','\\',''); 但它给出的错误为 您的SQL语法错误;检查与您的MySQL服务器版本相对应的手册,以在第1行'\\','')'附近使用正确的语法。 – 2014-09-03 06:42:30
试过'其中name =“ABC \\ xyz''? – Phil 2014-09-03 06:28:26
它工作。但是如果我想用通配符搜索一个字符串呢?如果我的字符串像1111abc \ xyz2222,并且我尝试使用abc \ xyz匹配或者使用like? – 2014-09-03 06:31:59
你能举个例子吗? – Phil 2014-09-03 06:33:20