问题一:两个字段 user_name, password。 我想查询用户名与密码比较相似的所有记录。select * from t where regexp_like(user_name, password)这个语句以前成功过,现在运行时总是报错:ORA-12725:正则表达式中的圆括号不匹配。问题二:我想将密码中的规律数据全部拿出来,如前3位是大写的引文字母,第4位是_,后三位是数字  的这些数据。譬如:CCD_654.
谢谢。

解决方案 »

  1.   

    with temp as(
    select 'ABC_123' a from dual
    union all
    select 'ABb_123' a from dual
    union all
    select 'ADC_12' a from dual
    union all
    select 'BC_123' a from dual
    )
    select * from temp where regexp_like(a,'[[:upper:]]{3,3}_[[:digit:]]{3,3}')
      

  2.   

    问题一:
    不知道,和版本有关?问题二:
    regexp_like(password,'^([A-Z]{3,3})+_([1-9])')
      

  3.   

    1, 如下
    select 'yes' from dual where regexp_like('abc(123)', 'abc(') ;
    ORA-12725: unmatched parentheses in regular expression你的password中的某些值可能含有正則表達式的特殊字符,這樣可能會導致其不能正確解釋。2. 借用1樓的,改一下
    with temp as(
    select 'ABC_123' a from dual
    union all
    select 'ABb_123' a from dual
    union all
    select 'ADC_12' a from dual
    union all
    select 'BC_123' a from dual
    )
    select * from temp where regexp_like(a,'[A-Z]{3}_[0-9]{3}');
      

  4.   

    谢谢楼上的,各位大侠!

    “你的password中的某些值可能含有正則表達式的特殊字符,這樣可能會導致其不能正確解釋。”
    我觉得很像你说的这种情况,如果真是这样,该怎么实现呢? 谢谢。