比如在A表中的USERID中有admin% 和admin这2个帐号。
用模糊查询出包含%的帐号
语句如下
SELECT A. USERID
FROM A
WHERE A. USERID LIKE '%输入的查询字符%'
如果“输入的查询字符”为 “%”
执行语句后会同时返回 admin%和admin这个帐号,结果显然不是我们需要的。
因为%为通配符。
同理如果输入“‘”则会报出SQL语句执行错误。因此我们需要对“输入的查询字符”进行字符串过滤方法如下:
public
class
Constant
... {
public static string ReplaceSqlLike(string strQuery)
...{
string strRet = strQuery;
strRet = strRet.Replace("/","//");
strRet = strRet.Replace("'","''");
strRet = strRet.Replace("%","/%");
strRet = strRet.Replace("[","/[");
strRet = "'%" + strRet + "%' escape '/'";
return strRet;
}
}
... {
public static string ReplaceSqlLike(string strQuery)
...{
string strRet = strQuery;
strRet = strRet.Replace("/","//");
strRet = strRet.Replace("'","''");
strRet = strRet.Replace("%","/%");
strRet = strRet.Replace("[","/[");
strRet = "'%" + strRet + "%' escape '/'";
return strRet;
}
}
更正后的语句如下
SELECT A. USERID
FROM A
WHERE A. USERID LIKE Constant.ReplaceSqlLike("输入的查询字符”)