這個問題也是無意中得知的,原因在於我在模糊查詢的時候輸入了乙個%,誰知將全部結果都查詢出來了,想了一下,%既然是萬用字元,輸了個%進去,當然全部查詢出來了,避免的辦法就是使用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...