在模糊查詢中使用ESCAPE

2021-05-24 06:48:14 字數 738 閱讀 2484

這個問題也是無意中得知的,原因在於我在模糊查詢的時候輸入了乙個%,誰知將全部結果都查詢出來了,想了一下,%既然是萬用字元,輸了個%進去,當然全部查詢出來了,避免的辦法就是使用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 '//'的作用就是將反斜槓後面的字元識別成普通字元,而不是萬用字元,這下在進行模糊查詢,輸入萬用字元就不會有錯誤了。

注意,一定要先替換反斜槓,然後再替換%和_

sql 中模糊查詢轉義 escape

當你想查詢 特殊字元時,請用escape select ename from emp where ename like s escape s 我們並不想查詢s後必須有乙個字元以上的員工,而是要剔除s,s出現的目的就是轉義,將 轉義了,這裡的 不是萬用字元,而是實際意義的 select ename f...

sql 中模糊查詢轉義 escape

當你想查詢 特殊字元時,請用escape select ename from emp where ename like s escape s 我們並不想查詢s後必須有乙個字元以上的員工,而是要剔除s,s出現的目的就是轉義,將 轉義了,這裡的 不是萬用字元,而是實際意義的 select ename f...

sql 中模糊查詢轉義 escape

當你想查詢 特殊字元時,請用escape select ename from emp where ename like s escape s 我們並不想查詢s後必須有乙個字元以上的員工,而是要剔除s,s出現的目的就是轉義,將 轉義了,這裡的 不是萬用字元,而是實際意義的 select ename f...