比如说:
在一段where条件语句中,遇到AND或OR就截取字符串 这个匹配必须是同时进行 不能先匹配AND后匹配OR匹配

解决方案 »

  1.   

    v_cut   := REGEXP_SUBSTR(v_REGULAREXP,
                                       '^([a-z]+|[0-9]+)$',
                                       1,
                                       i,
                                       'i');
    比如说这个,它是可以匹配所有小写字母或数字组合成的字符串。
    我现在想要同时匹配AND或OR
      

  2.   

    v_cut   := REGEXP_SUBSTR(v_REGULAREXP,
                                       '^([a-z]+|[0-9]+)$',
                                       1,
                                       i,
                                       'i');
    比如说这个,它是可以匹配所有小写字母或数字组合成的字符串。
    我现在想要同时匹配AND或OR
    没看懂啥意思
      

  3.   

    select * from a where a.id = 1 and (a.name=2 or a.name like '3%');
    不知道说的是这个不?其实我也没懂。。
      

  4.   

    (((...) AND (...) AND ((((...) AND (...)) AND ((...) OR (...) OR (...) OR (...))))假如这一段where语句 只要匹配到AND或OR就截取字符串
      

  5.   

    (((...) AND (...) AND ((((...) AND (...)) AND ((...) OR (...) OR (...) OR (...))))假如这一段where语句 只要匹配到AND或OR就截取字符串你一点都不会提问啊给出样例数据,并写出你期望的结果
      

  6.   

    (((...) AND (...) AND ((((...) AND (...)) AND ((...) OR (...) OR (...) OR (...))))假如这一段where语句 只要匹配到AND或OR就截取字符串你一点都不会提问啊给出样例数据,并写出你期望的结果


    (((...) AND (...) AND ((((...) AND (...)) AND ((...) OR (...) OR (...) OR (...))))
    把AND或OR当成分隔符 截取像这样的(((...) 每一段字符串 因为我是要改变括号里的字符串。在修改之后再把他们按原来的顺序连接起来。
      

  7.   


    转换前:
    (((OCNAME 0-LIKE HNTRAN_OC) AND (RELFLAG 4-= TRUE) AND ((((ORIGINALEVENTTIME 3->= 2010-04-09 00:00:00) AND (ORIGINALEVENTTIME 3-<= 2010-04-13 00:00:00)) AND ((OPERINF 0-LIKE 162024801) OR (OPERINF 0-LIKE 162024785) OR (OPERINF 0-LIKE 162024719) OR (OPERINF 0-LIKE 162024743) OR (OPERINF 0-LIKE 162024717) OR (OPERINF 0-LIKE 162024714) OR (OPERINF 0-LIKE 162023527) OR (OPERINF 0-LIKE 162023524) OR (OPERINF 0-LIKE 162023521) OR (OPERINF 0-LIKE 162023501) OR (OPERINF 0-LIKE 162024644) OR (OPERINF 0-LIKE 162024641) OR (OPERINF 0-LIKE 162001607) OR (OPERINF 0-LIKE 162014121) OR (OPERINF 0-LIKE 162023294) OR (OPERINF 0-LIKE 162003923))))))转换后
    (((OCNAME LIKE '%HNTRAN_OC%') AND (RELFLAG = 1) AND ((((ORIGINALEVENTTIME >= to_date('2010-04-09 00:00:00','yyyy-mm-dd hh24:mi:ss')) AND (ORIGINALEVENTTIME <= to_date('2010-04-13 00:00:00','yyyy-mm-dd hh24:mi:ss'))) AND ((OPERINF LIKE '%162024801%') OR (OPERINF LIKE '%162024785%') OR (OPERINF LIKE '%162024719%') OR (OPERINF LIKE '%162024743%') OR (OPERINF LIKE '%162024717%') OR (OPERINF LIKE '%162024714%') OR (OPERINF LIKE '%162023527%') OR (OPERINF LIKE '%162023524%') OR (OPERINF LIKE '%162023521%') OR (OPERINF LIKE '%162023501%') OR (OPERINF LIKE '%162024644%') OR (OPERINF LIKE '%162024641%') OR (OPERINF LIKE '%162001607%') OR (OPERINF LIKE '%162014121%') OR (OPERINF LIKE '%162023294%') OR (OPERINF LIKE '%162003923%'))))))