Oracle函数总结2(提供示例)

正则表达式函数

正则表达式中的元字符

元字符

意思

例子

/

说明要匹配的字符是一个特殊字符、常量或者后者引用。(后引用重复上一次的匹配)

/n 匹配换行符
// 匹配 /
/( 匹配 (
/) 匹配 )

^

匹配字符串的开头位置

如果A是字符串的第一个字符,^A 匹配 A

$

匹配字符串的末尾位置

如果B是字符串的最后一个字符,$B 匹配 B

*

匹配前面的字符0次或多次

ba*rk可以匹配 brkbarkbaark等等

+

匹配前面的字符1次或多次

ba+rk可以匹配 barkbaark等等,但是不能匹配brk,也就是说,最少有以一次。

?

匹配前面的字符0次或1

ba?rk可以匹配 barkbrk等等,但是不能匹配baark

{n}

匹配前面的字符恰好是n次,其中n是整数

hob{2}it可以匹配hobbit

{n,m}

匹配前面的字符至少是n次,最多是m次,其中nm都是整数

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-9A-Za-z
[:alpha:]可以匹配字符A-Za-z
[:blank:]可以匹配空格或tab
[:digit:]可以匹配数字0-9
[:graph:]可以匹配非空字符
[:lower:]可以匹配小写字母a-z
[:print:][:graph:]类似,不同之处在于[:print:]包括空格字符
[:punct:]可以匹配标点符号.,""等等
[:space:]可以匹配所有的空字符
[:upper:]可以匹配大写字母A-Z
[:xdigit:]可以匹配十六进制数字0-9A-Fa-f

/n

这是对前一次匹配命中的一个后引用,其中n是一个正整数

(.)/1可以匹配两个连续相同的非空字符。(.)可以匹配除null以外的任何单个字符,而/1则重复上一次匹配的内容,即再次匹配相同的字符,因此可以匹配两个连续相同的非空字符

[..]

匹配一个组合元素,例如多字符元素

[==]

指定等价类

REGEXP_LIKEx,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_INSTRx,

   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

----------------------

[email protected]

*  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

你可能感兴趣的:(Oracle函数总结2(提供示例))