日期:2014-05-16  浏览次数:21292 次

Mysql的like查询 特殊字符
我现在要做 mysql的like 模糊查询 select ... like '%变量%'。
这个变量 可能含有各种特殊字符,比如反斜杠“\”。
我看到对于反斜杠的模糊查询需要前面加两个反斜杠转换为“\\\”才可以正确查询。
我使用mysql_real_escape_string就不行了。
用c语言如何处理这种情况呢?
如果有两个或多个反斜杠呢?

------解决方案--------------------
加斜杆只是为了转义用的。对于查询结果没有影响。
------解决方案--------------------
特殊字符需要你在程序中做处理
------解决方案--------------------
那你把他去掉。mysql_real_escape_string 是防SQL注入用的。将'"\n\r......等特殊字符转义。
------解决方案--------------------
没办法只能特殊处理,首先,你的C语句中要对\转义一下,然后MYSQL还要在转义一下。
------解决方案--------------------
你可以用 like 的 escape 关键字可以指定转义字符,默认是\ 指定为其他的就不会对\n等转义。同时mysql_real_escape_string 是你处理sql 注入时它会转义一些特殊字符,如果你用预处理,那么可以避免实用这个函数。万一like 模糊匹配不好,就用正则REGEXP来做。