【FUNCTION】Oracle中的常见单行函数


※ 下面内容整理时,参考了华夏名网的下面一篇文章。在此表示感谢!
 
Oracle中的常见多行函数(组函数) 的介绍,可参考我的下面一篇学习笔记。
  
http://space.itpub.net/?uid-20335819-action-viewspace-itemid-693995
 
本篇整理内容包括
■NULL和单行函数
■单行字符串函数
■单行数字函数
■单行日期函数
■单行转换函数
■其他单行函数
 
SQL中的单行函数
 
SQL和PL/SQL中自带非常多类型的函数,有字符、数字、日期、转换、和混合型等多种函数用于处理单行数据,因此这些都可被统称为单行函数。
这些函数均可用于SELECT,WHERE、ORDER BY等子句中,单行函数也能在其他语句中使用,如update的SET子句,INSERT的VALUES子句,DELET的WHERE子句中。

■NULL和单行函数

NULL值表示一个未知数据或一个空值,算术操作符的所有一个操作数为NULL值,结果均为提个NULL值,
这个规则也适合非常多函数,只有CONCAT,DECODE,DUMP,NVL,REPLACE在调用了NULL参数时能够返回非NULL值。
在这些中NVL函数时最重要的,因为他能直接处理NULL值,
NVL有两个参数:NVL(x1,x2),x1和x2都式表达式,当x1为null时返回X2,否则返回x1。
 

■单行字符串函数

单行字符串函数用于操作字符串数据,他们大多数有一个或多个参数,其中绝大多数返回字符串。
 
1、ASCII(c1)
  c1是一字符串,返回c1第一个字母的ASCII码,他的逆函数是CHR()
SQL>
SQL> SELECT ASCII('AVC') BIG_A,
  2              ASCII('z') BIG_z
  3       FROM dual;
     BIG_A      BIG_Z
---------- ----------
        65        122
SQL>
 
2、CHR(<i>)[NCHAR_CS]
  i是个数字,函数返回十进制表示的字符
 
SQL>
SQL>  select CHR(65)  as CHR65,
  2          CHR(122) as CHR122,
  3    CHR(123) as CHR123
  4   FROM dual;
CHR65 CHR122 CHR123
----- ------ ------
A     z      {
SQL> 
 
3、CONCAT(c1,c2)
   c1,c2均为字符串,函数将c2连接到c1的后面,
   如果c1为null,将返回c2,如果c2为null,则返回c1,如果c1、c2都为null,则返回null。
   他和操作符||返回的结果相同
SQL>
SQL>  select concat('slobo ','Svoboda') username from dual;
USERNAME
-------------
slobo Svoboda
SQL>
 
4、INITCAP()
  c1为一字符串。函数将每个单词的第一个字母大写其他字母小写返回。单词由空格,控制字符,标点符号限制。
SQL>
SQL> select INITCAP('veni,vedi,vici') Ceasar from dual;
CEASAR
--------------
Veni,Vedi,Vici
SQL>
 
5、INSTR(c1,[c2,<i>[,j]])
   c1为源字符串,c2为目标字符串,i,j为整数,i为起始位置,j为匹配序号。
   函数返回c2在c1中第j次出现的位置,
   搜索从c1的第i个字符开始,当没有发现需要的字符时返回0,
   如果i为负数,那么搜索将从右到左进行,不过位置的计算还是从左到右,i和j的缺省值为1.
 
SQL>  select INSTR('Mississippi','i',3,3) from dual;
INSTR('MISSISSIPPI','I',3,3)
----------------------------
                          11
SQL>
 
SQL>
SQL>  select INSTR('Mississippi','i',-2,3) from dual;
INSTR('MISSISSIPPI','I',-2,3)
-----------------------------
                            2
SQL>
 
6、INSTRB(,[,i[,j])
 和INSTR()函数相同,只是他返回的是字节,对于单字节INSTRB()等于INSTR()
 
7、LENGTH(c1)
 c1为字符串,返回c1的长度,如果c1为null,那么将返回null值。
SQL>
SQL> select LENGTH('Ipso Facto') leng from dual;
      LENG
----------
        10
SQL>
 
8、LENGTHb()
 和LENGTH()相同,返回字节。
 
9、lower(c)
 返回c的小写字符,经常出目前where子串中
SQL>
SQL> select distinct job,LOWER(job)
  2  from emp
  3  WHERE LOWER(job) LIKE '%sale%';
JOB       LOWER(JOB)
--------- ----------
Salesman  salesman
SALESMAN  salesman
SQL>
 
10、LPAD(c1,<i>[,c2])
 c1,c2均为字符串,i为整数。
 在c1的左侧用c2字符串补足致长度i,可多次重复,
 如果i小于c1的长度,那么只返回i那么长的c1字符,其他的将被截去。
 c2的缺省值为单空格,参见RPAD。
SQL>
SQL> select LPAD('hello',7,'$') padded from dual;
PADDED
-------
$$hello
SQL>
 
11、LTRIM(c1,c2)
 把c1中最左边的字符去掉,使其第一个字符不在c2中,
    如果没有c2,那么c1就不会改动。
SQL>
SQL> select LTRIM('Mississippi','Mis') from dual;
LTRIM('MISSISSIPPI','MIS')
--------------------------
ppi
SQL>
 
12、RPAD(c1,<i>[,c2])
 在c1的右侧用c2字符串补足致长度i,可多次重复,
 如果i小于c1的长度,那么只返回i那么长的c1字符,其他的将被截去。
 c2的缺省值为单空格,其他和LPAD相似
 
13、RTRIM(c1,c2)
 把c1中最右边的字符去掉,使其第后一个字符不在c2中,
    如果没有c2,那么c1就不会改动。
 
14、REPLACE(c1,[c2,c3])
  c1,c2,c3都是字符串,函数用c3代替出目前c1中的c2后返回。
SQL>
SQL> select REPLACE('uptown','up','down') from dual;
REPLACE('UPTOWN','UP','DOWN')
-----------------------------
downtown
SQL>
 
15、STBSTR(c1,<i>[,j])
 c1为一字符串,i,j为整数,
 从c1的第i位开始返回长度为j的子字符串,
 如果j为空,则直到串的尾部。
SQL>
SQL> select SUBSTR('Message',1,4) from dual;
SUBSTR('MESSAGE',1,4)
---------------------
Mess
SQL>
 
16、SUBSTRB(c1,<i>[,j])
  和SUBSTR大致相同,只是I,J是以字节计算。
 
17、SOUNDEX(c1)
  返回和c1发音相似的词
SQL>
SQL> select SOUNDEX('dawes') Dawes,
  2         SOUNDEX('daws') Daws,
  3      SOUNDEX('dawson')
  4  from dual;
DAWES DAWS SOUNDEX('DAWSON')
----- ---- -----------------
D200  D200 D250
SQL>
 
18、TRANSLATE(c1,c2,c3)
  将c1中和c2相同的字符以c3代替
SQL>
SQL> select TRANSLATE('fumble','uf','ar') test from dual;
TEST
------
ramble
SQL>
 
19、TRIM([LEADING[TRAILING[BOTH]]] [ trim_character ] from c3)
 将c3串中的第一个,最后一个,或都删除。
    这里的“trim_character”参数只允许包含一个字符,不支持多字符。
 
(1)默认情况下TRIM会同时删除字符串前后出现的空格。
SQL> select trim (' DWEYE ') "TRIM e.g." from dual;
TRIM e.g.
---------
DWEYE
SQL>
 
(2)“BOTH”参数表示同时去除字符串前后所指定的内容(默认情况下删除空格)。
SQL>
SQL> select trim (both from ' DWEYE ') "TRIM e.g." from dual;
TRIM e.g.
---------
DWEYE
SQL>
 
(3)“TRAILING”参数可以完成字符串尾部空格的删除功能。
SQL>
SQL> select trim (trailing from ' DWEYE ') "TRIM e.g." from dual;
TRIM e.g.
---------
 DWEYE
SQL>
 
(4)“LEADING”参数正好相反,完成字符串头部空格的删除功能。
SQL>
SQL> select trim (leading from ' DWEYE ') "TRIM e.g." from dual;
TRIM e.g.
---------
DWEYE
SQL>
 
(5)“trim_character”参数改变“删除空格”的默认行为。
SQL>
SQL> select trim ('x' from 'xxxxDWEYExxxx') "TRIM e.g." from dual;
TRIM e.g.
---------
DWEYE
SQL>
 
(6)配合“BOTH”、“TRAILING”和“LEADING”三个参数的使用效果
SQL>
SQL> select trim (both 'x' from 'xxxxDWEYExxxx') "TRIM e.g." from dual;
TRIM e.g.
---------
DWEYE
 
SQL> select trim (trailing 'x' from 'xxxxDWEYExxxx') "TRIM e.g." from dual;
TRIM e.g.
---------
xxxxDWEYE
 
SQL> select trim (leading 'x' from 'xxxxDWEYExxxx') "TRIM e.g." from dual;
TRIM e.g.
---------
DWEYExxxx
SQL>
 
20、UPPER()
  返回c1的大写,常出现where子串中

■单行数字函数

单行数字函数操作数字数据,执行数学和算术运算。
所有函数都有数字参数并返回数字值。
所有三角函数的操作数和值都是弧度而不是角度,oracle没有提供内建的弧度和角度的转换函数。
 
1、ABS()
  返回n的绝对值
 
2、ACOS()
  反余玄函数,返回-1到1之间的数。n表示弧度
SQL>
SQL> select ACOS(-1) pi,ACOS(1) ZERO FROM dual;
        PI       ZERO
   ---------- ----------
   3.14159265          0
SQL>
 
3、ASIN()
  反正玄函数,返回-1到1,n表示弧度
 
4、ATAN()
  反正切函数,返回n的反正切值,n表示弧度。
 
5、CEIL()
  返回大于或等于n的最小整数。
 
6、COS()
  返回n的余玄值,n为弧度
 
7、COSH()
  返回n的双曲余玄值,n 为数字。
SQL>
SQL> select COSH(1.4) FROM dual;
     COSH(1.4)
    ----------
    2.15089846
SQL>
 
8、EXP()
  返回e的n次幂,e=2.71828183.
 
9、FLOOR()
  返回小于等于N的最大整数。
 
10、LN(N)
  返回N的自然对数,N必须大于0
 
11、LOG(n1,n2)
  返回以n1为底n2的对数
 
12、MOD(n1,n2)
  返回n1除以n2的余数,
 
13、POWER(n1,n2)
  返回n1的n2次方
 
14、ROUND(n1,n2)
  四舍五入,返回舍入小数点右边n2位的n1的值,n2的缺省值为0,返回小数点最接近的整数,
    如果n2为负数就舍入到小数点左边相应的位上,n2必须是整数。
SQL>
SQL> select ROUND(12345,-2),ROUND(12345.54321,2) FROM dual;
ROUND(12345,-2) ROUND(12345.54321,2)
--------------- --------------------
          12300             12345.54
SQL>
 
15、SIGN(n)
  如果n为负数,返回-1,如果n为正数,返回1,如果n=0返回0.
 
16、SIN(n)
  返回n的正玄值,n为弧度。
 
17、SINH(n)
  返回n的双曲正玄值,n为弧度。
 
18、SQRT(n)
  返回n的平方根,n为弧度
 
19、TAN(n)
  返回n的正切值,n为弧度
 
20、TANH(n)
  返回n的双曲正切值,n为弧度
 
21、TRUNC(n1,n2)
  返回截尾到n2位小数的n1的值,n2缺省设置为0,当n2为缺省设置时会将n1截尾为整数,如果n2为负值,就截尾在小数点左边相应的位上。

■单行日期函数

单行日期函数操作DATA数据类型,绝大多数都有DATA数据类型的参数,绝大多数返回的也是DATA数据类型的值。
 
1、ADD_MONTHS(d,<i>)
 返回日期d加上i个月后的结果。i能使任意整数。
    如果i是个小数,那么数据库将隐式的他转换成整数,将会截去小数点后面的部分。
 
2、LAST_DAY(d)
  函数返回包含日期d的月份的最后一天
 
3、MONTHS_BETWEEN(d1,d2)
  返回d1和d2之间月的数目,如果d1和d2的日的日期都相同,或都使该月的最后一天,那么将返回一个整数,否则会返回的结果将包含一个分数。
 
4、NEW_TIME(d1,tz1,tz2)
  d1是个日期数据类型,当时区tz1中的日期和时间是d时,返回时区tz2中的日期和时间。tz1和tz2是字符串。
 
5、NEXT_DAY(d,dow)
 返回日期d后由dow给出的条件的第一天,
    dow使用当前会话中给出的语言指定了一周中的某一天,
    返回的时间分量和d的时间分量相同。
 
6、ROUND([,])
  将日期d按照fmt指定的格式舍入,fmt为字符串。
 
7、SYADATE
  函数没有参数,返回当前日期和时间。
 
8、TRUNC(d[,fmt])
  返回由fmt指定的单位的日期d.

■单行转换函数

单行转换函数用于操作多数据类型,在数据类型之间进行转换。
 
1、CHARTORWID()
  c 使一个字符串,函数将c转换为RWID数据类型。
 
2、CONVERT(,[,])
  c尾字符串,dset、sset是两个字符集,函数将字符串c由sset字符集转换为dset字符集,sset的缺省设置为数据库的字符集。
 
3、HEXTORAW()
  x为16进制的字符串,函数将16进制的x转换为RAW数据类型。
 
4、RAWTOHEX()
  x是RAW数据类型字符串,函数将RAW数据类转换为16进制的数据类型。
 
5、ROWIDTOCHAR()
  函数将ROWID数据类型转换为CHAR数据类型。
 
6、TO_CHAR(x[,fmt])
 x是个data或number数据类型,函数将x转换成fmt指定格式的char数据类型,
    如果x为日期nlsparm=NLS_DATE_LANGUAGE 控制返回的月份和日份所使用的语言。
    如果x为数字nlsparm=NLS_NUMERIC_CHARACTERS 用来指定小数位和千分位的分隔符,及货币符号。
    NLS_NUMERIC_CHARACTERS ="dg", NLS_CURRENCY="string"
 
7、TO_DATE([,[,)
  c表示字符串,fmt表示一种特别格式的字符串。返回按照fmt格式显示的c,nlsparm表示使用的语言。函数将字符串c转换成date数据类型。
 
8、TO_MULTI_BYTE()
  c表示一个字符串,函数将c的担子截字符转换成多字节字符。
 
9、TO_NUMBER([,[,)
  c表示字符串,fmt表示一个特别格式的字符串,函数返回值按照fmt指定的格式显示。nlsparm表示语言,函数将返回c代表的数字。
 
10、TO_SINGLE_BYTE()
  将字符串c中得多字节字符转化成等价的单字节字符。该函数仅当数据库字符集同时包含单字节和多字节字符时才使用

■其他单行函数

 
1、BFILENAME(dir,file)
 dir是个directory类型的对象,file为一文件名。
    函数返回一个空的BFILE位置值指示符,函数用于初始化BFILE变量或是BFILE列。
 
2、DECODE(x,m1,m2[,m3[,m4[,m5]]])
 x是个表达式,m1是个匹配表达式,x和m1比较,
    如果m1等于x,那么返回r1,否则,x和m2比较,依次类推m3,m4,m5.直到有返回结果。
 
3、DUMP(x,[,[,[,]]])
 x是个表达式或字符,fmt表示8进制、10进制、16进制、或则单字符。
    函数返回包含了有关x的内部表示信息的VARCHAR2类型的值。
    如果指定了n1,n2那么从n1开始的长度为n2的字节将被返回。
 
4、EMPTY_BLOB()
  该函数没有参数,函数返回 一个空的BLOB位置指示符。函数用于初始化一个BLOB变量或BLOB列。
 
5、EMPTY_CLOB()
  该函数没有参数,函数返回 一个空的CLOB位置指示符。函数用于初始化一个CLOB变量或CLOB列。
 
6、GREATEST()
  exp_list是一列表达式,返回其中最大的表达式,每个表达式都被隐含的转换第一个表达式的数据类型,如果第一个表达式是字符串数据类型中的所有一个,那么返回的结果是varchar2数据类型, 同时使用的比较是非填充空格类型的比较。
 
7、LEAST()
  exp_list是一列表达式,返回其中最小的表达式,每个表达式都被隐含的转换第一个表达式的数据类型,如果第一个表达式是字符串数据类型中的所有一个,将返回的结果是varchar2数据类型, 同时使用的比较是非填充空格类型的比较。
 
8、UID
  该函数没有参数,返回唯一标示当前数据库用户的整数。
 
9、USER
  返回当前用户的用户名
 
10、USERENV()
  基于opt返回包含当前会话信息。opt的可选值为:
  ISDBA    会话中SYSDBA脚色响应,返回TRUE
  SESSIONID  返回审计会话标示符
  ENTRYID   返回可用的审计项标示符
  INSTANCE  在会话连接后,返回实例标示符。该值只用于运行Parallel 服务器并且有 多个实例的情况下使用。
  LANGUAGE  返回语言、地域、数据库设置的字符集。
  LANG    返回语言名称的ISO缩写。
  TERMINAL  为当前会话使用的终端或计算机返回操作系统的标示符。
 
11、VSIZE(x)
  x是个表达式。返回x内部表示的字节数。
 
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20335819/viewspace-693987/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/20335819/viewspace-693987/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值