日期:2014-05-16  浏览次数:20412 次

《Oracle Database 11g SQL 开发指南》学习笔记——第四章_使用简单函数(二)

4.1.4 正则表达式函数。
   \ 转义字符,  ^ 匹配字符串开头位置,  $ 匹配字符串结束位置,

   *匹配前面字符0次或多次       + 匹配1次或多次,  ?匹配0或1次, 

    {n} 匹配恰好n次,    {n,m}匹配至少n至多m次        . 匹配除null之外任意字符   

  (pattern)匹配制定模式的一个子表达式。   x|y匹配x或y,xy是一个或多个字符
       [abc]  [a-z]       [: :]指定一个字符类,可以匹配该类中的任何字符。
       [:alphanum:]匹配0-9,A-Z,a-z        [:alpha:]匹配A-Z,a-z
       [:blank:] 匹配空格或tab键          [:digit:]匹配0-9
       [:graph:] 匹配非空字符           [:print:]匹配非空字符和空格字符
       [:lower:]匹配a-z   [:upper:]匹配A-Z      [:punct:]匹配标点符号
       [:space:]匹配所有空白字符          [:xdigit:]匹配十六进制数字0-9,A-F,a-f
       [..]匹配一个组合元素,如多字符元素。           [==]指定等价类
       \n对前一次捕获的一个反向引用,n为正整数

Oracle 10g 新增的元字符:
    \d数字字符  \D非数字字符  \w字母字符  \W非字母字符  \s空白字符  \S非空白字符
    \A只匹配字符串的开头位置  \Z只匹配末尾或末尾换行符之前的位置
    *?匹配前面的模式元素0次或多次   +?一次或多次  ??0次或1次  
    {n,}匹配前面模式元素至少n次

    
1、REGEXP_LIKE()
REGEXP_LIKE(x, pattern [,match_option]):在x中查找pattern参数中定义的正则表达式,

      match_option可为:‘c'区分大小写(默认)

                                         'I'不区分大小写

                                         'n'允许使用可以匹配任意字符的字符串

                                         'm'将x作为一个包含多行的字符串
  例如检索名字以j或J开头的顾客:

       SELECT * FROM customers  WHERE  REGEXP_LIKE( name ,'^j','i');
2、REGEXP_INSTR()
  REGEXP_INSTR(x,pattern [,start [,occurrence [,return_option
[,match_option [,subexp_option]]]]])用于x中查找pattern;返回pattern出现的位置,匹配从1开始。return_option说明该返回什么整数,若为0返回pattern中第一个字符的位置,若非0则返回pattern之后字符的位置。subexp_option是Oracle 11g新增的,对于具有子表达式的模式,subexp_option是0~9的之间的一个非负数,指出pattern中哪一个子表达式是函数的目标。
3、REGEXP_REPLACE()
  REGEXP_REPLACE(x, pattern [, replace_string [, start
 [ ,occurrence [,match_option] ] ] ])在x中查找pattern并将其替换为replace_string。
4、REGEXP_SU