要查一个oracle数据库表中一个字符串列中,任意一个字符连续为3个的数据,我现在只能全罗列出来:
select 字段名 from 表名 where regexp_like(字段名,'(a{3}|b{3}|c{3}||d{3}|e{3}|f{3}|g{3}|h{3}|i{3}|j{3}|k{3}|l{3}|m{3}|n{3}|o{3}|p{3}|q{3}|r{3}|s{3}|t{3}|u{3}|v{3})|w{3}|x{3}|y{3}|z{3}')  
很繁琐,请问谁有更好的方法?

解决方案 »

  1.   

    with a as
    (
    select 'mmaaaab' a from dual
    union all
    select 'xxbbbbbc' from dual
    union all
    select 'ccccbbc' from dual
    union all
    select 'ddddbbc' from dual
    union all
    select 'eeeebc' from dual
    union all
    select 'ffffbbc' from dual
    )select * from a where regexp_like(a,'[a-z]{3}')不知道是不是你想要的
      

  2.   

    这个不对。
    '[a-z]{3}'的意思是,任意连续3个字母,而不是相同的连续3个字母,
    with a as
    (
    select 'abbc' a from dual
    )
    select * from a where regexp_like(a,'[a-z]{3}');
    结果是:abbc是不对的。
      

  3.   


    LS你说的很有道理,我小改了一下,这样应该没问题with a as
    (
    select 'mmagaab' a from dual
    union all
    select 'xxbbbbbc' from dual
    union all
    select 'ccccbbc' from dual
    union all
    select 'ddddbbc' from dual
    union all
    select 'asdfas' from dual
    union all
    select 'ffffbbc' from dual
    )select * from a where regexp_like(a,'([a-z])\1{2}')