sql中通配符的搜索

 

sql中有如下通配符

含義分別爲

  % 包含零個或更多字符的任意字符串。

  _(下劃線) 任何單個字符。

  [ ] 指定範圍(例如 [a-f])或集合(例如 [abcdef])內的任何單個字符。

 

  [^] 不在指定範圍(例如 [^a - f])或集合(例如 [^abcdef])內的任何單個字符。


一般情況,在搜索框中輸入:“_”(下劃線)或者“%”(百分號),然後進行搜索,由於這兩個字符是sql中的通配符,所以一般情況是會搜索到所有的結果,除非你已經考慮到了這個問題。

因爲是通配符,所以按常理,需要將需要模糊查詢的字符串轉化成轉義的字符串,寫了一個方法,如下:

 

public static String processQuery(String queryParameter) {
      if (!StringUtil.isBlank(queryParameter)) {
         if (queryParameter.indexOf("%") >= 0) {
            return (queryParameter.replace("_", "\\_")).replaceAll("%",
                  "\\\\%").trim();
         } else {
            return (queryParameter).trim().replace("_", "\\_");
         }
      } else {
         return null;
      }
   }
 比方,你傳入“%hha_haoao”,該方法會返回“\%hha\_haoao”
 在sql文件中使用關鍵字‘escape’ 

 

Sql代碼 
  1. Select * from service  where name like '\%hha\_haoao' escape '\' ;  

即把%和_當作爲普通的字符串,進行模糊搜索。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章