Mysql中“_” 的搜索问题
|
真是寒啊~ 事情起因,帮 Babyken 做了一个 0day 查询的脚本,脚本很简单,就是简单的取用户输入的值做 LIKE 操作查询数据库。做好后经测试一直运行很好。可是今天 Babyken 告诉我说有个BUG,输入 "___" 或 ".__" 等类似的关键字时,会把数据库中的所有记录都取出来。 偶又试了以前写过的几个应用,寒,都有这个问题。。。 看起来是SQL本身对LIKE的处理问题。问了几个朋友也都没有注意过。后来在Mysql手册上找到答案: Pattern matching using SQL simple regular expression comparison. Returns 1 (TRUE) or 0 (FALSE). With LIKE you can use the following two wildcard characters in the pattern: Char Description 当时感觉就是汗啊~~ 以前怎么自己就没有注意过呢? 解决办法是把用户的输入中的 _ 和 % 转义。 相关Mysql说明页面:http://www.mysql.com/doc/en/String_comparison_functions.html 2004年1月16日22时25分补记: |
