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’
- Select * from service where name like '\%hha\_haoao' escape '\' ;
即把%和_當作爲普通的字符串,進行模糊搜索。