
2008年10月8日
这个问题也是无意中得知的,原因在于我在模糊查询的时候输入了一个%,谁知将全部结果都查询出来了,想了一下,%既然是通配符,输了个%进去,当然全部查询出来了,避免的办法就是使用ESCAPE。
SQL语句可以写成:
SELECT * FROM tableName WHERE colName LIKE '%' + input + '%' ESCAPE '\\';
这里假设我们的输入是input,在源程序里,input需要进行处理,
input = input.Replace("'", "''"); //将1个单引号替换为2个单引号,防止SQL注入
input = input.Replace("\\", "\\\\"); //将反斜杠替换为2个反斜杠
input = input.Replace("%", "\\%");//将%替换为\%
input = input.Replace("_", "\\_"); //将_替换为\_
上面3个替换就是将原字符前面加上反斜杠,这样输入到SQL语句中,ESCAPE '\\'的作用就是将反斜杠后面的字符识别成普通字符,而不是通配符,这下在进行模糊查询,输入通配符就不会有错误了。
注意,一定要先替换反斜杠,然后再替换%和_
posted @ 2008-10-08 11:35 清晨阳光 阅读(218) 评论(1)
编辑