如何判断在一个sql语句中是否存在select
要考虑被注释的情况,如果被注释了就不算了
 和 “select”被当作别的字符串的一部分的情况

解决方案 »

  1.   

    sql语句存在string里面
    判断这个string里面是否存在select这样的字符串
    同时,这个select字符串要是被注释了就忽略
    还有,这个select字符串不能是别的字符串的一部分,比如 select a , b , C_select from...
    那个C_select 不能算
      

  2.   

    正则表达式限制开头啦 "^select*"
      

  3.   

    用字边界"^(?<!--).*?\bselect\b....."
      

  4.   


    public static void main(String[] args) {
    String str = "select a , b , C_select from select a from b";
    Pattern pattern = Pattern.compile("(^select\\s+|\\s+select\\s+)",Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
    Matcher m = pattern.matcher(str);
    while(m.find()) {
    System.out.println("get ok");
    if(m.group(1) != null) {
    System.out.println(m.group(1));
    }
    }
    }