正则表达式函数
正则表达式中的元字符
元字符 |
意思 |
例子 |
/ |
说明要匹配的字符是一个特殊字符、常量或者后者引用。(后引用重复上一次的匹配) |
/n 匹配换行符 |
^ |
匹配字符串的开头位置 |
如果A是字符串的第一个字符,^A 匹配 A |
$ |
匹配字符串的末尾位置 |
如果B是字符串的最后一个字符,$B 匹配 B |
* |
匹配前面的字符0次或多次 |
ba*rk可以匹配 brk、bark、baark等等 |
+ |
匹配前面的字符1次或多次 |
ba+rk可以匹配 bark、baark等等,但是不能匹配brk,也就是说,最少有以一次。 |
? |
匹配前面的字符0次或1次 |
ba?rk可以匹配 bark、brk等等,但是不能匹配baark。 |
{n} |
匹配前面的字符恰好是n次,其中n是整数 |
hob{2}it可以匹配hobbit |
{n,m} |
匹配前面的字符至少是n次,最多是m次,其中n,m都是整数 |
hob{2,3}it可以匹配hobbit或者hobbbit |
. |
匹配除null以外的任意单个字符 |
hob.it中的.可以是任意的单个字符,如:hobsit等等 |
(pattern) |
括号中pattern是一个子正则表达式,匹配指定pattern模式的一个子表达式。 |
如:aaa(x|y)可以匹配aaax或者aaay。 |
x|y |
匹配“或” |
x|y可以匹配x或者y |
[abc] |
可以匹配abc中的任何单个字符 |
hello[abc]可以匹配helloa,hellob,helloc |
[a-z] |
可以匹配指定范围内的任何单个字符 |
hell[a-z]可以匹配hello或者hellz |
[::] |
指定一个字符类,可以匹配该类中的任何字符 |
[:alphanum:]可以匹配字符0-9、A-Z、a-z |
/n |
这是对前一次匹配命中的一个后引用,其中n是一个正整数 |
(.)/1可以匹配两个连续相同的非空字符。(.)可以匹配除null以外的任何单个字符,而/1则重复上一次匹配的内容,即再次匹配相同的字符,因此可以匹配两个连续相同的非空字符 |
[..] |
匹配一个组合元素,例如多字符元素 |
|
[==] |
指定等价类 |
|
* REGEXP_LIKE(x,pattern[,match_option])
其中 match_option]:的范围是
1: 'c' :表示区分大小写
2: 'i' 不区分大小写
3: 'n' 允许匹配任意字符的操作符号
4: 'm' 将x作为一个包含多行的字符串
SQL> select hiredate, empno from emp where
REGEXP_LIKE(TO_CHAR(hiredate,'yyyy'),'^198[0-1]$');
HIREDATE EMPNO
-------------- ----------
17-12月-80 7369
20-2月 -81 7499
22-2月 -81 7521
02-4月 -81 7566
28-9月 -81 7654
01-5月 -81 7698
09-6月 -81 7782
17-11月-81 7839
08-9月 -81 7844
03-12月-81 7900
03-12月-81 7902
已选择11行。
* REGEXP_INSTR(x,
Pattern,
[,start]
[,occurrence]
[,return_option]
[,match_option]
)
SQL> select REGEXP_INSTR('[email protected]','m',1,1,0,'i') from dual;
REGEXP_INSTR('[email protected]','M',1,1,0,'I')
---------------------------------------------------
14
REGEXP_REPLACE(x,
Pattern,
[,replace_string]
[,start]
[,occurence]
[,match_option]
)
SQL> select REGEXP_REPLACE('[email protected]','mail','oogle',1,0,'i') from dual;
REGEXP_REPLACE('VOYAGE
----------------------
* REGEXP_SUBSTR(x,
Pattern,
[,start]
[,occurrence]
[,match_option]
)
SQL> select REGEXP_INSTR('[email protected]','m',1,1) from dual;
REGEXP_INSTR('[email protected]','M',1,1)
---------------------------------------------
14
1)聚集函数
AVG(x)
SQL> select avg(sal) from emp;
AVG(SAL)
----------
2073.21429
* COUNT(x)
SQL> select count(empno) from emp;
COUNT(EMPNO)
------------
14
* MAX(x)
SQL> select max(sal) from emp;
MAX(SAL)
----------
5000
* MEDIAN(x)
SQL> select median(sal) from emp;
MEDIAN(SAL)
-----------
1550
* MIN(x)
SQL> select min(sal) from emp;
MIN(SAL)
----------
800
* STDDEV(x)
SQL> select stddev(sal) from emp;
STDDEV(SAL)
-----------
1182.50322
* SUM(x)
SQL> select sum(sal) from emp;
SUM(SAL)
----------
29025
* VARIANCE(x)
SQL> SELECT VARIANCE(sal) FROM emp;
VARIANCE(SAL)
-------------
1398313.87
2)使用group by 子句
SQL> select empno,avg(sal) from emp group by empno
2 having avg(sal) > 1300;
EMPNO AVG(SAL)
---------- ----------
7499 1600
7566 2975
7698 2850
7782 2450
7788 3000
7839 5000
7844 1500
7902 3000