Oracle 常用系统函数

  SQL语言是一种脚本语言,提供了大量的内置函数,使用这些函数可以大大增强SQL语句的运算和判断功能。

一、字符类函数

  字符类函数是专门用于字符处理的函数,处理的对象可以是字符或字符串常量,也可以是字符类型的列,常用的字符类函数有以下几种:

  1、ASCII(c)函数和 CHR(i)函数

    ASCII(c) 函数用于返回一个字符的 ASCII码,其中参数 c 表示一个字符;

    CHR(i) 函数用户返回给出 ASCII 码值所对应的字符,i 表示一个 ASCII 码值。

1 SQL > select   ascii('Z') Z,  ascii('H')  H  from dual;
2 
3        Z     H
4     --------------
5       90    72
1  SQL > select   chr(90),chr(72)   from  dual;
2  
3    C            C
4    -----------------
5     Z            H

     说明:dual表是 Oracle 系统内部提供的一个用于实现临时数据计算的特殊表,也称名义表,它只有一个列 dummy,类型为varchar2(1).

  2Concat(s1,s2) 函数

    该函数将字符串 s2 连接到字符串 s1 的后面,如果 s1 为 null,则返回 s2;如果 s2 为null,则返回 s1; 如果 s1 和 s2 都为空,则返回null。

SQL > select concat('hello ','World!')  from dual;

concat
---------
hello World!

  3、Initcap(s) 函数

    该函数将字符串 s 的每个单词的第一个字母大写,其他字母小写,单词之间用空格、控制字符、标点符号来区分。

SQL > select initcap('hello world!') info from dual;

info
---------
Hello Wordl!

  4、Instr(s1,s2 [,i] [,j]) 函数

    该函数用户返回字符 s2 在字符 s1 中第 j 次出现的位置,搜索从字符串 s1 的第 i 个字符开始。当没有发现要查找的字符时,该函数返回值为 0 ;如果 i 为负数,那么搜索将从右到左进行,但函数的返回位置还是从左到右来计算。其中, s1 和 s2 均为字符串,i 和 j 均为正整数,默认值为1。

SQL > select instr('hello world123','l',2,3) info  from dual;

 info
---------
  10

  在字符串“hello world123” 中,从第2个字符开始查询字符串 ‘l’ 第3次出现的位置。

  5、length(s) 函数

    该函数用于返回字符串 s 的长度,如果 s 为null,则返回值 null。

SQL > select length('hello world') info  from dual;

  info 
-------
  11

  6、Lower(s)函数和 Upper(s)

    Lower 该函数用于返回字符串的小写形式;Upper 该函数用于返回字符串的大写形式。

SQL > select lower('HELLO') info1, upper('hello') into2  from dual;

  info1     info2 
-------------------
  hello      HELLO

  7、Ltrim(s1,s2) 函数、Rtrim(s1,s2) 和 Trim(s1,s2) 函数

    Ltrim 该函数用于删除字符串 s1 左边的字符串 s2;Rtrim 函数用于删除字符串 s1 右边的字符串 s2, Trim 函数用于删除字符串 s1 左右两端字符串 s2。

    如果在这个3个函数中不知道字符串 s2 ,则表示去除相应方位的空格。

SQL > select ltrim('-----hello','-') info1,ltrim('    hello') info2  from dual;
info1 info2
------------------
   hello hello

  8、Replace(s1,s2[ ,s3]) 函数

    该函数使用 s3 字符串替换出现 s1  字符串中的所有 s2 字符串,并返回替换后的新字符串,其中,s3 的默认值为空字符串。

SQL > select replace('good luck!','o','l') info  from dual;

     info
 ----------
   glld  luck

  9、Substr(s,i,[ j ]) 函数

    该函数表示从字符串 s 的第 i 个位置开始截取长度为 j 的子字符串。如果省略参数 j ,则直接截取到尾部,其中,i 和 j  为正整数。

SQL > select substr('hello',2,2) info1,substr('hello',2) info2  from dual;

  info1     info2
------------------
   el       ello

二、数字类函数

  数字类函数主要用于执行各种数据计算,所有的数字类函数都有数字参数并返回数字值。 Oracle 系统提供了大量的数字类函数,这些函数大大增强了 Oracle 系统的科学计算能力。

  常用的数字类函数:

函数 说明
ABS(n)  返回 n de 绝对值
Ceil(n) 返回大于或等于数值 n  的最下整数
cos(n) 返回 n 的余弦值,n 为弧度
exp(n) 返回 e 的 n 次幂,e= 2.71828183
florr(n) 返回小于或等于 n 的最大整数
log(n1,n2) 返回以 n1 除以 n2 的对数
mod(n1,n2) 返回 n1 除以 n2 的余数
power(n1,n2) 返回 n1 的 n2 次方
round(n1,n2)

返回舍如小数点右边 n2 位的 n1 的值,n2 的默认值为0,会返回小数点最接近的整数。

如果n2 为负数,就舍入到小数点左边相应的位上,n2 必须是整数

sign(n) 若 n 为负数,则返回-1,若 n 为整数,则返回 1, 若 n = 0,则返回0
sin(n) 返回 n的正弦值,n 为弧度
sqrt(n) 返回 n的平方根
trunc(n1,n2)

返回结尾到 n2 位小数的 n1的值,n2 默认设置为 0 ,

当 n2 为默认设置时,会将 n1 截尾为整数,如果 n2 为负值,就截尾在小数点左边相应的位上

  1、Ceil(n) 函数

    该函数返回大于或等于数值 n 的最小整数,常用于一些比较运算。

SQL > select ceil(8.3) info1,ceil(-5.6)  info2,ceil(8.6) info3  from dual;

 info1   info2  info3
-----------------------
   8       -5        9

  2、Round(n1,n2) 函数

    该函数返回舍入小数点右边 n2 位的 n1 的值,n2 的默认值为 0,这会返回小数点最接近的整数。如果 n2 为负数,就舍入到小数点左边相应的位上,n2 必须是整数。

SQL > select round(3.14159,2) info1, round(343.14159,-1) into2  from dual;

 info1     info2
---------------------
  3.14      340

  3、Power(n1,n2) 函数

    该函数返回 n1 的 n2 次方,其中 n1 和 n2 都为整数。

SQL > select power(2,4) info  from dual;
  
  info
-------
   16

三、日期和时间类函数

  Oracle 系统提供了许多用于处理日期和时间的函数,通过这下函数可以实现计算需要的特定的日期和时间,常用函数如下:

    

函   数 说  明
add_month(d,i) 返回日期 d 驾驶 i 个月之后的结果,i 为任意整数
last_day(d) 返回包含日期 d 月份的最后一天
months_between(d1,d2)

返回 d1 和 d2 之间的数目,若 d1 和 d2 的日期都相同,或者都是该月的最后一天,

则返回一个整数,否则返回的结果将包含一个小数

new_time(d1,t1,t2)

其中,d1 是一个日期数据类型,当时区 t1 中的日期和时间是 d1时,返回市区 t2 中的日期

和时间。t1 和 t2 是字符串。

sysdate() 返回系统当前的日期

   注意:日期默认的格式是 “DD-MON-YY”,其中 “DD” 表示两位数字的 “日”,MON 表示3位数的字的“月份”,“YY”表示两位数字的“年份”。例如:“01-10月-11”表示2011年10月1日。

  1、sysdate()函数

    该函数返回系统当前的日期。

SQL > select sysdate as  系统日期 from dual;

  系统日期
-----------
 30-5月-19

  2、add_months(d,i) 函数

    该函数返回日期 d 加上 i 个月之后的结果。其中,i 为任意整数。

SQL > select add_months(sysdate,6) info from dual;

   info
-----------
 30-11月-19

四、转换函数

  在操作表中的数据时,经常需要将某个数据从一种类型转换为另外一种数据类型,这时需要转换类型函数。常用的转换函数如下:

    

函  数 说   明
chartorwida(s) 该函数将字符串 s 转换为 rwid 数据类型
convert(s,aset [,bset]) 该函数将字符串 s 由 bset 字符集转换为 aset 字符集
rowidtochar() 该函数将 rowid 数据类型转换为 char 类型
to_char(x[,format]) 该函数实现将表达式转换为字符串,format 表示字符串格式
to_date(s [,format[lan]]) 该函数将字符串 s 转换成 date 类型,formate 表示字符串格式,lan 表示所使用的语言
to_number(s [,format[lan]])

该函数将返回字符串 s 代表的数字,返回值按照 format 格式进行显示,format 表示字符串

格式,lan 表示所使用的语言

  1、to_char(x [,format]) 函数

    该函数实现将表达式转换为字符串,format 表示字符串格式

SQL > select sysdate as  默认格式日期,to_char(sysdate,'YYYY-MM-DD') as 转换后日期 from dual;

  默认格式日期       转换后日期     
---------------------------------
   30-5月-19       2019-05-30

  2、to_number(s [,format[lan]]) 函数

    该函数将返回字符串 s 代表的数字,返回值按照 format  格式进行显示, format 表示字符串格式,lan 表示所使用的语言。

SQL > select to_number('18','xxx') as  十进制数  from dual;

  十进制数
-------------
   24

五、聚合类函数

  使用聚合类函数可以针对一组数据进行计算,并得到相应的结果。下面是常用的聚合函数:

函数 说明
avg(x[ distinct | all ]) 计算选择列表项的平均值,列表项目可以是一个列或多个列的表达式
count(x[ distinct | all ]) 返回查询结果中的记录数
max(x[ distinct | all ]) 返回选择列表项目中的最大数,列表项目可以是一个列或多个列的表达式
min(x[ distinct | all ]) 返回选择列表项目中的最小数,列表项目可以是一个列或多个列的表达式
sum(x[ distinct | all ]) 返回选择列表项目中的数值总和,列表项目可以是一个列或多个列的表达式
variance(x[ distinct | all ]) 返回选择列表项目中的统计方差,列表项目可以是一个列或多个列的表达式
stddev(x[ distinct | all ]) 返回选择列表项目中的标准偏差,列表项目可以是一个列或多个列的表达式

六、其他函数

原文地址:https://www.cnblogs.com/niujifei/p/10924155.html