将update语句中的逗号替换,如:update t1 set d='aaa,bbbb,aa,a',sid='16,1,3,3',price=230.0,allprice=25300.0 只替换引号外面,用来分割字段和值的‘,’,要求替换后的结果
如下:update t1 set d='aaa,bbbb,aa,a'@sid='16,1,3,3'@price=230.0@allprice=25300.0

解决方案 »

  1.   

        String test = "update t1 set d='aaa,bbbb,aa,a',sid='16,1,3,3',price=230.0,allprice=25300.0";
        String regex = ",(?=(?:[^']*'[^']*'[^']*)*$)|,(?=[^']*$)";
        System.out.println(test.replaceAll(regex, "@"));前提是你这句SQL是语法正确的,而且,不考虑SQL中有注释等特殊情况,比如
    update t1 set d='aaa,bbbb,aa,a',sid='16,1,3,3',price=230.0,allprice=25300.0 --- '''这里放逗号,我就死给你看了
      

  2.   

    优化一下:String regex = ",(?=(?:[^']*'[^']*')*[^']*$)";也就是只替换后面没有'号,或者后面引号成双出现的逗号
      

  3.   

    另外,如果是引号中的引号的话,比如显示一个单引号
    不支持
    select '\''
    这个需要再转义,速度会太慢,如果数据库没问题,建议写成
    select ''''