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

来源:互联网 发布:在线考试系统源码asp 编辑:程序博客网 时间:2024/04/28 22:13

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_SUBSTR()
  REGEXP_SUBSTR(x, pattern [, start [ ,occurrence [,match_option 
 [, subexp_option] ] ] ])返回x中可以匹配pattern的一个子字符串,其中个字段与REGXP_INSTR()相同。
5、REGEXP_COUNT(x, pattern [,start [, match_option] ])这是11g新增加的一个函数。在x中查找pattern并返回pattern在x中出现的次数。

4.2、使用聚合函数
  AVG(x)    COUNT(x)  MAX(x)   MEDIAN(x)返回x的中间值  

  MIN(x)  STDDEV(x)返回x的标准差    SUM(x)     VARIANCE(x):返回x的方差
  聚合函数可以用于任何有效地表达式。
  聚合函数会忽略空值。
  DISTINCT关键字可以与聚合函数一起使用。

                 例如:select  AVG(DISTINCT price) FROM  products;
  使用COUNT()函数时,应避免使用*号,这样会使返回结果时需要更多的时间,应使用某一列或者ROWID伪列。
  ORDER  BY子句中也可以包含聚合函数调用
  
4.3、对行进行分组;
 1、使用group by 子句,可以指定多列。
 2、不必将group by 中用到的列包含在select之后的列列表中。
 3、如果查询中包含聚合函数,而选择的列并不在聚合函数中,那么这些列就必须在GROUP BY子句中
 4、不能在where子句中使用聚合函数来限制行;过滤行组要使用having子句。having必须与group by子句一起使用。