ORACLE正则表达式函数详解(二)

2014-11-24 17:04:06 · 作者: · 浏览: 1
################################
后向引用(backreference):
后向引用是一个很有用的特性。它能够把子表达式的匹配部分保存在临时缓冲区中,供以后重用。缓冲区从左至右进行编号,并利用 \digit 符号进行访问。子表达式用一组圆括号来显示。利用后向引用可以实现较复杂的替换功能。
下面的regexp_replace('Steven Chen', '(.*) (.*)', '\2, \1') 此函数中,首先在正则表达式函数中,('Steven Chen', '(.*) (.*)', 其中两个圆括号中会匹配出Chen, Steven;再使用"\数字“的符号进行引用。
    SQL> select regexp_replace('Steven Chen', '(.*) (.*)', '\2, \1') as reversed_name from dual;        
    REVERSED_NAME  
    --------------------  
    Chen, Steven  
在DDL中也可以正则表达式,比如Constraint, index, view
Sql代码  
    SQL> alter table person add constraint constraint_zip check (regexp_like(zip, '^[[:digit:]]+$'));  
      
    SQL> create index person_idx on person(regexp_substr(last_name, '^[[:upper:]]'));