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

Oracle -- Oracle中几个数字函数、转换函数、字符串函数

2018-02-24 11:15 423 查看
一、数字函数

数字型函数输入数字型参数并返回数值型的值。多数该类函数的返回值支持38位小数点,如:COS, COSH, EXP, LN,LOG, SIN, SINH, SQRT, TAN, and TANH 支持36位小数点。ACOS, ASIN, ATAN, and ATAN2支持30位小数点

1.trunc(n1[,n2])

注:n2为正时,将小数点n2后的数去掉即可;

n2为负时,将小数点前的几位数置为0,小数点后的数去掉即可

SELECT TRUNC(23.56),TRUNC(3.1415926,1),TRUNC(3.1415926,3),TRUNC(3.1415926,-1),TRUNC(23.56,-1) FROM DUAL;
返回结果:
TRUNC(23.56):23
TRUNC(3.1415926,1):3.1
TRUNC(3.1415926,3):3.141
TRUNC(3.1415926,-1):0
TRUNC(23.56,-1) :20
2.round(n1[,n2])

SELECT ROUND(23.56),ROUND(3.1415926,1),ROUND(3.1415926,3),ROUND(3.1415926,-1),ROUND(23.56,-1) FROM DUAL;
返回结果:
ROUND(23.56):24
ROUND(3.1415926,1):3.1
ROUND(3.1415926,3):3.142
ROUND(3.1415926,-1):0
ROUND(23.56,-1):20
3.mod(n1,n2)

返回n1除n2的余数,若n2=0,则返回n1的值

SELECT MOD(3,5) FROM DUAL;--3
4.round():四舍五入,将原值转化为指定的小数位数

SELECT ROUND(1.45,0) N1,ROUND(1.55,0) N2 FROM DUAL;--N1:1,N2:2
5.floor():向下取整

SELECT FLOOR(1.45) N1,FLOOR(1.65) N2,FLOOR(-1.55) N3,FLOOR(-1.45) N4 FROM DUAL;--N1:1,N2:1,N3:-2,N4:-2
6.ceil():向上取整
SELECT CEIL(1.45) N1,CEIL(1.55) N2,CEIL(-1.45) N3,CEIL(-1.55) N4 FROM DUAL;--N1:2,N2:2,N3:-1,N4:-1
7.power:取幂
SELECT POWER(3,2) FROM DUAL;--9

8.sqrt:求平方根
SELECT SQRT(9) N2 FROM DUAL;--3
9.返回值的符号(正数返回为1,负数为-1)
SELECT SIGN(-13) N1,SIGN(265) N2 FROM DUAL;--N1:-1;N2:1
二、字符型函数:返回字符值
该类函数返回与输入类型相同的类型。

返回的CHAR类型值长度不超过2000字节;
返回的VCHAR2类型值长度不超过4000字节;
如果上述应返回的字符长度超出,oracle并不会报错而是直接截断至最大可支持长度返回。

返回的CLOB类型值长度不超过4G;
对于CLOB类型的函数,如果返回值长度超出,oracle不会返回任何错误而是直接抛出错误。

1.SUBSTR(c1,n1[,n2]) 

截取指定长度的字符串。

2.REPLACE(c1,c2[,c3]) 

将c1字符串中的c2替换为c3,如果c3为空,则从c1中删除所有c2。

SELECT REPLACE('asWEfewEw as ee','w','-') FROM DUAL;--asWEfe-E- as ee
3.INSTR(str1,str2)

SELECT INSTR('ABCFDGFDHD','FD') FROM DUAL;
4.字符串连接

1)||

SELECT 'ABCFDGFDHD'||'FD' N1 FROM DUAL;
2)concate

SELECT CONCAT('ABCFDGFDHD','FD') N1 FROM DUAL;
5.TRIM([{{ LEADING | TRAILING | BOTH }[ trim_character ]} FROM ]trim_source)

如果没有指定任何参数,则oracle去除trim_source头尾空格 

SELECT TRIM('WasWEfewEw as eeW') N1 FROM DUAL;--WasWEfewEw as eeW如果指定了trim_character参数,则oracle去掉trim_source头尾trim_character(这个建议细致测试,有多种不同情形的哟) 
SELECT TRIM('W' FROM 'WasWEfewEw as eeW')FROM DUAL;--asWEfewEw as ee
如果指定了leading参数,则会去掉trim_source头部trim_character
SELECT TRIM(leading 'W' FROM 'WasWEfewEw as eeW') FROM DUAL;--asWEfewEw as eeW
如果指定了trailing参数,则会去掉trim_source尾部trim_character
SELECT TRIM(trailing 'W' FROM 'WasWEfewEw as eeW') FROM DUAL;--WasWEfewEw as ee
如果指定了both参数,则会去掉trim_source头尾trim_character
SELECT TRIM(both 'W' FROM 'WasWEfewEw as eeW') FROM DUAL;--asWEfewEw as ee


注意:trim_character长度=1
6.replace的超集:translate(str,from_str,to_str)
translate(str,from,to):from 与to 是从左到右一一对应的关系,如果不能对应,则视为空值。如果
from_str比to_str长,那么在
from_str中而不在to_str中的额外字符将从str中被删除,因为它们没有相应的替换字符。若to_str比from_str长,多出的字符无作用,也不会出现异常。
SELECT TRANSLATE('ABCBBAADEF','BA','$%') N1 FROM DUAL; --B将被$替代,A将被%替代。%$C$$%%DEF
SELECT TRANSLATE('ABCBBAADEF','BAD','$%') N2 FROM DUAL; --B将被$替代,A将被%替代,D对应的值是空值,将被移走。%$C$$%%EF
注:to_str不能为空。若to_str为空,则返回空。Oracle 将空字符串解释为 NULL,若TRANSLATE 中的任何参数为NULL,那结果也是 NULL。
SELECT TRANSLATE('ABC','B','XX') FROM DUAL;
如:将数字保留,将其他的大写字母移除。

SELECT TRANSLATE('2KRW229','0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ','0123456789') "Translate example" FROM DUAL;--2229
如:将字符串的最后一个、第一个保留外,其他的用*替换。
SELECT TRANSLATE('中国人',substr('中国人',1,length('中国人') - 1),rpad('*',length('中国人'),'*')) "License"FROM DUAL;--**人
SELECT TRANSLATE('中国人',substr('中国人',2,length('中国人') - 1),rpad('*',length('中国人'),'*')) "License"FROM DUAL;--中**
7.decode(str,if,result)
SELECT DEPTNO,DECODE(DEPTNO,10,'1',30,'3','') FROM DEPT;
8.LTRIM(c1[,c2])
从字符串c1左侧截取与指定字符串c2相同的字符并返回。若c2为空,则默认截取空格。
SELECT LTRIM('asWEfewEw as ee','w') FROM DUAL;--asWEfewEw as ee
9.LPAD(c1,n[,c2])

若n<c1.length,则截取指定长度

若n>c1.length and c2 is null,以空格从左到右补充字符长度至n,并返回

若n>c1.length and c2 is not null,以指定字符c2从左到右补充字符长度至n,并返回

SELECT LPAD('what is piano',5),LPAD('what is piano',16),LPAD('what is piano',16,'-'),LPAD('what is piano',-2,'-') FROM DUAL;
返回结果:
LPAD('what is piano',5):what
LPAD('what is piano',16): what is piano
LPAD('what is piano',16,'-'):---what is piano
LPAD('what is piano',-2,'-'):
10.RPAD(c1,n[,c2])

补充字符时与LPAD相反,其他基本相同。

三、转换函数

1.to_number()
转换为数字类型

SELECT TO_NUMBER(TO_CHAR(SYSDATE,'HH24')) N1 FROM DUAL; --以数字显示的小时数
2.to_char()

3.to_date()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: