java将字符串中空格处理成sql中and的模糊查询
根据页面输入的name进行模糊查询,前提是去掉前后空格,如果剩下的中间还存在若干空格的话(如:a B c D),将中间的空格处理成均只有一个空格的格式(如:a bB c D),并且要中间的每个空格处理成sql中的and语句进行模糊查询同时不区分大小写(如: where 1 = 1 and (name like '%a%' or name like '%A%') and (name like '%b%' or name like '%B%')……)。
方法目的返回一个sql语句:
public String disposeString(String name) {
String sql = "select * from table_name where 1 = 1";
//当传过来的name不为空时:
if(name != null && name.length() != 0) {
String fname = name.trim(); //去掉前后空格
String str = "";
//当去掉前后空格的字符串中间还存在未知个数的空格时:将中间所有的空格处理成只剩下一个空格
if(fname.indexOf(" ") > -1) {
for (int i = 0; i < fname.length() - 1; i++) {
if ((int) fname.charAt(i) == 32 && (int) fname.charAt(i + 1) == 32) {
continue;
}
str += fname.charAt(i);
}
if ((int) fname.charAt(fname.length() - 1) != 32)
str += fname.charAt(fname.length() - 1);
} else {
str += fname; //当去掉前后空格的字符串中间没有空格时:
}
String[] strs = str.split(" ");
for(int i = 0;i<strs.length;i++) {
if((!strs[i].equals(""))) {
sql += " and (name like '%"+strs[i].toLowerCase()+"%' or name like '%"+strs[i].toUpperCase()+"%')";
}
}
}
return sql;
}