您的位置:首页 > 数据库 > Oracle

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

2012-08-29 15:12 423 查看
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子句一起使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐