1. 程式人生 > >在模糊查詢中過濾容易引發SQL語句執行異常的符號

在模糊查詢中過濾容易引發SQL語句執行異常的符號

比如在A表中的USERID中有admin% 和admin這2個帳號。

用模糊查詢出包含%的帳號

語句如下

SELECT A. USERID

FROM A 

WHERE A. USERID  LIKE  '%輸入的查詢字元%'

如果“輸入的查詢字元”為 “%”

執行語句後會同時返回 admin%和admin這個帳號,結果顯然不是我們需要的。

因為%為萬用字元。

同理如果輸入“‘”則會報出SQL語句執行錯誤。因此我們需要對“輸入的查詢字元”進行字串過濾方法如下:

publicclass Constant
    
{
        
publicstaticstring 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("輸入的查詢字元”)