今天看论坛上的一个帖子,我简化描述一下,如下:with temp as(
select 'D.140 Supplement 1' A from dual
union all
select 'E.191(2000) Amendment 1' A from dual
)
SELECT regexp_instr(A,'[^.[:alnum:]]') FROM temp请高手帮忙解释下[^.[:alnum:]]的含义?如果在这里我不用字符簇表示,该怎么改写了?最好能帮忙解释下字符簇的含义和使用方法,谢谢!

解决方案 »

  1.   

    [^.[:alnum:]],代表何任何数字和字母,相当于[0-9,a-z,A-Z]
    改写
    WITH temp AS
     (SELECT 'D.140 Supplement 1' A
        FROM dual
      UNION ALL
      SELECT 'E.191(2000) Amendment 1' A FROM dual)
    SELECT regexp_instr(A, '[^.[0-9,a-z,A-Z]') FROM temp
      

  2.   

    谢谢tangren。
    但我还有一点不明白,^.在这里表示什么意思?
    '[^.[0-9,a-z,A-Z]'在这里具体匹配哪些字符了?怎么解释了?谢谢了。
      

  3.   

    [:alnum:]:代表何任何数字和字母,相当于[0-9,a-z,A-Z]^表示"非"意思
    [^.[:alnum:]]:表示除了数字、字符和.符号SELECT regexp_instr(A,'[^.[:alnum:]]') FROM temp
    整个的意思就是查找除数字、字符和.符号以外的其它符号的位置