String sql="select * from a where bmbm=:a_bmbm"然后有一个变量B,一个变量C,B是需要匹配"a_bmbm"字符串的,C则是在B匹配以后需要替换SQL中:a_bmbm部分的值!表达式表示:
  if(sql.indexOf(B)>0)
  {
    if(C!=null)
    {
       sql="select * from a where bmbm=C";//直接替换:a_bmbm
     }else
       {
         sql="select * from a where 1=1"//需要bmbm=:a_bmbm替换为1=1,这个算法怎么写?
       }
  }

解决方案 »

  1.   

    indexOf定位,
    substring来取……或者直接把filter提取出来String s = "bmbm=''";
    String s2="bmbm='B'";if(s.equals(s2))
    {
      filter="bmbm=C";
    }
    else{
      filter="";
    }sql="select * from table" + (filter.length()>0?" where "+filter:"");
      

  2.   

    这里有篇文章,希望对你有帮助:
    http://internet.blog.enorth.com.cn/article/20761.shtml
      

  3.   

    实际上你可以把你的变量命名起得更特殊一点
    例如 ${name}  这样正则表达式不就好些了吗,
    否则像你这样命名 :name 还的判断哪些字符不能作为变量,然后才能确定变量的结尾,有点麻烦
    所以还是用我推荐的方式命名,你通过EL表达式语言的定义方式就可以看出这样定义的好处