在模糊查詢中過濾容易引發SQL語句執行異常的符號
阿新 • • 發佈:2019-02-04
比如在A表中的USERID中有admin% 和admin這2個帳號。
用模糊查詢出包含%的帳號
語句如下
SELECT A. USERID
FROM A
WHERE A. USERID LIKE '%輸入的查詢字元%'
如果“輸入的查詢字元”為 “%”
執行語句後會同時返回 admin%和admin這個帳號,結果顯然不是我們需要的。
因為%為萬用字元。
同理如果輸入“‘”則會報出SQL語句執行錯誤。因此我們需要對“輸入的查詢字元”進行字串過濾方法如下:
publicclass Constant{
publicstaticstring ReplaceSqlLike(
{
string strRet = strQuery;
strRet = strRet.Replace("/","//");
strRet = strRet.Replace("'","''");
strRet = strRet.Replace("%","/%");
strRet = strRet.Replace("[","/[");
strRet ="'%"+ strRet +"%' escape '/'";
}
}
更正後的語句如下
SELECT A. USERID
FROM A
WHERE A. USERID LIKE Constant.ReplaceSqlLike("輸入的查詢字元”)