我的思想很简单:
1.将源字符串按"'"分割
2.用sql不使用的字符("~")替换''中的空格,并且在两边加上"'"字符,然后合并
3.用空格再次分割合并后的字符串
4.遍历分割得到的数组,并且替换所有"~"字符为空格
如果"~"也可能使用,那就按住alt然后按小键盘区的数字来找asicII以外的字符
希望对你有帮助
String sql="select * from workers job = 'java engineer'";
String[] infos=sql.split("'");
String temp="";
for(int counter=0;counter<infos.length;counter++)
if(counter%2==1){
infos[counter]=infos[counter].replace(' ','~');
infos[counter]="'"+infos[counter]+"'";
}
for(int counter=0;counter<infos.length;counter++)
temp+=infos[counter];
infos=temp.split(" ");
for(int counter=0;counter<infos.length;counter++)
infos[counter]=infos[counter].replace('~',' ');

/* for(int counter=0;counter<infos.length;counter++)
System.out.println(infos[counter]);*/

解决方案 »

  1.   

    既然是用户输入的就可以在解析前对其进行预处理,如果用户输入“java engineer”,则替换为“java^engineer”,
    这样你要解析的sql就变为“select * from workers job = 'java&engineer'”,用原来的方法对其进行解析,解析完成后再将“java^engineer”换成“java engineer”就可以了,不知这样楼主是否满意。