数值型函数
返回绝对值 abs(x)
ABS(X)
【功能】返回x的绝对值
【参数】x,数字型表达式
【返回】数字
SQL> select abs(100) , abs(-100) from dual ;
ABS(100) ABS(-100)
---------- ----------
100 100
返回正负值 sign(x)
sign(x)
【功能】返回x的正负值
【参数】x,数字型表达式
【返回】数字,若为正值返回1,负值返回-1,0返回0
SQL> select sign(100), sign(-100),sign(0) from dual ;
SIGN(100) SIGN(-100) SIGN(0)
---------- ---------- ----------
1 -1 0
返回较大的最小整数 ceil(x)
ceil(x)
【功能】返回大于等于x的最小整数值
【参数】x,数字型表达式
【返回】数字
SQL> select ceil(3.1) , ceil(3.1+5.2), ceil(0) from dual ;
CEIL(3.1) CEIL(3.1+5.2) CEIL(0)
---------- ------------- ----------
4 9 0
返回较小的最大整数 floor(x)
floor(x)
【功能】返回小于等于x的最大整数值
【参数】x,数字型表达式
【返回】数字
SQL> select floor(3.1) , floor(3.1+5.2), floor(0) from dual ;
FLOOR(3.1) FLOOR(3.1+5.2) FLOOR(0)
---------- -------------- ----------
3 8 0
返回x的y次幂 power(x,y)
power(x,y)
【功能】返回x的y次幂
【参数】x,y 数字型表达式
【返回】数字
SQL> select power(2.5 ,2), power(1.5,0),power(20,-1) from dual ;
POWER(2.5,2) POWER(1.5,0) POWER(20,-1)
------------ ------------ ------------
6.25 1 0.05
【相近】exp(y)
返回e的y次幂。(e为数学常量)
【关系】z=power(x,y),则y=1/log(z,x) (条件z,x>0)
返回常量e的y次幂 exp(y)
exp(y)
【功能】返回e的y次幂(e为数学常量)
【参数】y,数字型表达式
【返回】数字
SQL> select exp(3) ,exp(0),exp(-3) from dual ;
EXP(3) EXP(0) EXP(-3)
---------- ---------- ----------
20.0855369 1 0.04978706
【相近】power(x,y)
返回e的y次幂。
【相反】ln(y)
返回e为底的自然对数。
返回以x为底的y的对数 log(x,y)
【功能】返回以x为底的y的对数
【参数】x,y,数字型表达式,
【条件】x,y都必须大于0
【返回】数字
SQL> select power(4,2) , log(16,2),1/log(16,4) from dual ;
POWER(4,2) LOG(16,2) 1/LOG(16,4)
---------- ---------- -----------
16 0.25 2
SQL> select power(6.5,3),log(274.625,3),1/log(power(6.5,3),6.5) from dual;
POWER(6.5,3) LOG(274.625,3) 1/LOG(POWER(6.5,3),6.5)
------------ -------------- -----------------------
274.625 0.195642520743 3
【相近】ln(y)
返回e为底的y的对数。(e为数学常量)
【关系】z=power(x,y),则y=1/log(z,x) (条件z,x>0)
返回以e为底的y的对数(e为数学常量)
ln(y)
【功能】返回以e为底的y的对数(e为数学常量)
【参数】y,数字型表达式 (条件y>0)
【返回】数字
SQL> select exp(3),exp(-3),ln(20.0855369),ln(0.049787068) from dual;
EXP(3) EXP(-3) LN(20.0855369) LN(0.049787068)
---------- ---------- -------------- ---------------
20.0855369 0.04978706 2.999999998845 -3.000000007388
【相近】log(x,y)
返回以x为底的y的对数
【相反】exp(y)
返回e的y次幂
返回x除以y的余数 mod(x,y)
【功能】返回x除以y的余数
【参数】x,y,数字型表达式
【返回】数字
SQL> select mod(23,8),mod(24,8) from dual;
MOD(23,8) MOD(24,8)
---------- ----------
7 0
返回四舍五入后的值 round(x[,y])
round(x[,y])
【功能】返回四舍五入后的值
【参数】x,y,数字型表达式,
如果y不为整数则截取y整数部分,
如果y>0则四舍五入为y位小数,
如果y小于0则四舍五入到小数点向左第y位。
【返回】数字
SQL> select round(5555.6666,2.1),round(5555.6666,-2.6),round(5555.6666) from dual;
ROUND(5555.6666,2.1) ROUND(5555.6666,-2.6) ROUND(5555.6666)
-------------------- --------------------- ----------------
5555.67 5600 5556
【相近】trunc(x[,y])
返回截取后的值,用法同round(x[,y]),只是不四舍五入
返回x按精度y截取后的值 trun(x[,y])
【功能】返回x按精度y截取后的值
【参数】x,y,数字型表达式,
如果y不为整数则截取y整数部分,
如果y>0则截取到y位小数,
如果y小于0则截取到小数点向左第y位,小数前其它数据用0表示。
【返回】数字
SQL> select trunc(5555.66666,2.1),trunc(5555.66666,-2.6),trunc(5555.033333) from dual;
TRUNC(5555.66666,2.1) TRUNC(5555.66666,-2.6) TRUNC(5555.033333)
--------------------- ---------------------- ------------------
5555.66 5500 5555
【相近】round(x[,y])
返回截取后的值,用法同trunc(x[,y]),只是要做四舍五入
返回x的平方根 sqrt(x)
sqrt(x)
【功能】返回x的平方根
【参数】x数字型表达式
【返回】数字
SQL> select sqrt(64),sqrt(10) from dual;
SQRT(64) SQRT(10)
---------- ----------
8 3.16227766
三角函数
SIN(x)
【功能】返回一个数字的正弦值
SQL> select sin(1.57079) from dual;
SIN(1.57079)
------------
0.9999999999
SIGH(x)
【功能】返回双曲正弦的值
SQL> select sin(20),sinh(20) from dual;
SIN(20) SINH(20)
---------- ----------
0.91294525 242582597.
COS(x)
【功能】返回一个给定数字的余弦
SQL> select cos(-3.1415927) from dual;
COS(-3.1415927)
---------------
-0.999999999999
COSH(x)
【功能】返回一个数字反余弦值
SQL> select cosh(20) from dual;
COSH(20)
----------
242582597.
TAN
【功能返回数字的正切值
SQL> select tan(20),tan(10) from dual;
TAN(20) TAN(10)
---------- ----------
2.23716094 0.64836082
TANH
【功能返回数字n的双曲正切值
SQL> select tanh(20),tan(20) from dual;
TANH(20) TAN(20)
---------- ----------
1 2.23716094
ASIN(x)
【功能】给出反正弦的值
【示例】select asin(0.5) from dual;
返回:0.52359878
ACOS(x)
【功能】给出反余弦的值
SQL> select asin(0.5) from dual;
ASIN(0.5)
----------
0.52359877
ATAN(x)
【功能】返回一个数字的反正切值
SQL> select atan(1) from dual;
ATAN(1)
----------
0.78539816
字符型函数
返回字符表达式最左端字符的ASCII 码值 ASCII(x1)
ASCII(x1)
【功能】:返回字符表达式最左端字符的ASCII 码值。
【参数】:x1,字符表达式
【返回】:数值型
SQL> select ascii(‘A‘) A,ascii(‘a‘) a,ascii(‘ ‘) space,ascii(‘示‘) hz from dual;
A A SPACE HZ
---------- ---------- ---------- ----------
65 97 32 51902
【说明】在ASCII()函数中,纯数字的字符串可不用‘’括起来,但含其它字符的字符串必须用‘’括起来使用,否则会出错。
如果最左端是汉字,只取汉字最左半边字符的ASCII 码
【互反函数】:chr()
返回ASCII为x的字符 chr()
CHR(n1)
【功能】:将ASCII 码转换为字符。
【参数】:n1,为0 ~ 255,整数
【返回】:字符型
SQL> select chr(54740) zhao,chr(65) chr65 from dual;
ZHAO CHR65
---- -----
赵 A
【互反函数】:ASCII
连接两个字符串 concat(c1,c2)
CONCAT(c1,c2)
【功能】连接两个字符串
【参数】c1,c2 字符型表达式
【返回】字符型
同:c1||c2
SQL> select concat(‘010-‘,‘88888888‘)||‘转3456‘ 电话号码 from dual;
电话号码
------------------
010-88888888转3456
把每个单词的首字个字母变成大写 initcap(c1)
INITCAP(c1)
【功能】返回字符串并将字符串的第一个字母变为大写,其它字母小写;
【参数】c1字符型表达式
【返回】字符型
SQL> select initcap(‘smith abc aBC‘) upp from dual ;
UPP
-------------
Smith Abc Abc
把整个字符串转换为小写 lower(c1)
LOWER(c1)
【功能】:将字符串全部转为小写
【参数】:c1,字符表达式
【返回】:字符型
SQL> select lower(‘AaBbCcDd‘)AaBbCcDd from dual;
AABBCCDD
--------
aabbccdd
把整个字符串转换为大写 upper(c1)
UPPER(c1)
【功能】将字符串全部转为大写
【参数】c1,字符表达式
【返回】字符型
SQL> select upper(‘AaBbCcDd‘) upper from dual;
UPPER
--------
AABBCCDD
把每个单词首个字母变为大写 nls_initcap(x[,y])
NLS_INITCAP(x[,y])
【功能】返回字符串并将字符串的第一个字母变为大写,其它字母小写;
【参数】x字符型表达式
【参数】Nls_param可选,
查询数据级的NLS设置:select * from nls_database_parameters;
例如:
指定排序的方式(nls_sort=) 。
nls_sort=SCHINESE_RADICAL_M(部首、笔画)
nls_sort=SCHINESE_STROKE_M(笔画、部首SCHINESE_PINYIN_M(拼音))
【返回】字符型
SQL> select nls_initcap(‘ab cde‘) "test", nls_initcap(‘a c b d e‘,‘nls_sort= SCHINESE_PINYIN_M‘) "test1" from dual;
test test1
------ ---------
Ab Cde A C B D E
SQL> select nls_initcap(‘ab cde‘) "test",nls_initcap(‘a c b d e‘,‘NLS_LANGUAGE=AMERICAN‘) "test1" from dual;
test test1
------ ---------
Ab Cde A C B D E
把整个字符串转换为小写 nls_lower(x[,y])
NLS_LOWER(x[,y])
【功能】返回字符串并将字符串的变为小写;
【参数】x字符型表达式
【参数】Nls_param可选,指定排序的方式(nls_sort=) 。
SCHINESE_RADICAL_M(部首、笔画)
SCHINESE_STROKE_M(笔画、部首SCHINESE_PINYIN_M(拼音))
【返回】字符型
SQL> select nls_LOWER(‘ab cde‘) "test",nls_LOWER(‘a c b d e‘,‘nls_sort= SCHINESE_PINYIN_M‘) "test1" from dual;
test test1
------ ---------
ab cde a c b d e
把整个字符串转换为大写 nls_upper(x[,y])
NLS_UPPER(x[,y])
【功能】返回字符串并将字符串的转换为大写;
【参数】x字符型表达式
【参数】Nls_param可选,指定排序的方式(nls_sort=) 。
SCHINESE_RADICAL_M(部首、笔画)
SCHINESE_STROKE_M(笔画、部首SCHINESE_PINYIN_M(拼音))
【返回】字符型
SQL> select NLS_UPPER(‘ab cde‘) "test",NLS_UPPER(‘a c b d e‘,‘nls_sort= SCHINESE_PINYIN_M‘) "test1" from dual;
test test1
------ ---------
AB CDE A C B D E
字符串中搜索字符位置(全角算1字符) instr(C1,C2[,I[,J]])
INSTR(C1,C2[,I[,J]])
【功能】在一个字符串中搜索指定的字符,返回发现指定的字符的位置;
【说明】多字节符(汉字、全角符等),按1个字符计算
【参数】
C1 被搜索的字符串
C2 希望搜索的字符串
I 搜索的开始位置,默认为1
J 第J次出现的位置,默认为1
【返回】数值
SQL> select instr(‘oracle traning‘,‘ra‘,1,2) instring from dual;
INSTRING
----------
9
SQL> select instr(‘重庆某软件公司‘,‘某‘,1,1),instrb(‘重庆某软件公司‘,‘某‘,1,1) instring from dual;
INSTR(‘重庆某软件公司‘,‘某‘,1, INSTRING
------------------------------ ----------
3 5
字符串中搜索字符位置(全角算2字符) instrb(C1,C2[,I[,J]])
INSTRB(C1,C2[,I[,J]])
【功能】在一个字符串中搜索指定的字符,返回发现指定的字符的位置;
【说明】多字节符(汉字、全角符等),按2个字符计算
【参数】
C1 被搜索的字符串
C2 希望搜索的字符串
I 搜索的开始位置,默认为1
J 第J次出现的位置,默认为1
【返回】数值
SQL> select instr(‘重庆某软件公司‘,‘某‘,1,1),instrb(‘重庆某软件公司‘,‘某‘,1,1) instring from dual;
INSTR(‘重庆某软件公司‘,‘某‘,1, INSTRING
------------------------------ ----------
3 5
返回字符串的长度(全角算1字符) length(c1)
LENGTH(c1)
【功能】返回字符串的长度;
【说明】多字节符(汉字、全角符等),按1个字符计算
【参数】C1 字符串
【返回】数值型
SQL> select length(‘小工匠‘),length(‘北京市海锭区‘),length(‘北京TO_CHAR‘) from dual;
LENGTH(‘小工匠‘) LENGTH(‘北京市海锭区‘) LENGTH(‘北京TO_CHAR‘)
---------------- ---------------------- ---------------------
3 6 9
返回字符串的长度(全角算2字符)lengthb(c1)
LENGTH(c1)
【功能】返回字符串的长度;
【说明】多字节符(汉字、全角符等),按2个字符计算
【参数】C1 字符串
【返回】数值型
SQL> select lengthb(‘小工匠‘),lengthb(‘北京市海锭区‘),lengthb(‘北京TO_CHAR‘) from dual;
LENGTHB(‘小工匠‘) LENGTHB(‘北京市海锭区‘) LENGTHB(‘北京TO_CHAR‘)
----------------- ----------------------- ----------------------
6 12 11
返回字符串的长度(其他)lengthc(c1) length2(c1) length4(c1)
LENGTHC(c1).LENGTH2(c1).LENGTH4(c1)
【功能】返回字符串的长度;
【说明】多字节符(汉字、全角符等),按1个字符计算
【参数】C1 字符串
【返回】数值型
SQL> select length(‘小工匠‘),length(‘北京市海锭区‘),length(‘北京TO_CHAR‘) from dual;
LENGTH(‘小工匠‘) LENGTH(‘北京市海锭区‘) LENGTH(‘北京TO_CHAR‘)
---------------- ---------------------- ---------------------
3 6 9
Oracle中的字符函数中,有一类函数是求字符长度的函数,length、lengthB、lengthC、length2、length4几个函数中比较常用的是length、lengthB。
他们的含义分别是:
Length函数返回字符的个数,使用定义是给定的字符集来计算字符的个数
LENGTHB给出该字符串的byte
LENGTHC使用纯Unicode
LENGTH2使用UCS2
LENGTH4使用UCS4
SQL> Select length(‘你好‘), lengthB(‘你好‘),lengthC(‘你好‘),length2(‘你好‘), length4(‘你好‘) from dual;
LENGTH(‘你好‘) LENGTHB(‘你好‘) LENGTHC(‘你好‘) LENGTH2(‘你好‘) LENGTH4(‘你好‘)
-------------- --------------- --------------- --------------- ---------------
2 4 2 2 2
在左边添加字符 lpad(c1,n[,c2])
LPAD(c1,n[,c2])
【功能】在字符串c1的左边用字符串c2填充,直到长度为n时为止
【参数】C1 字符串
n 追加后字符总长度
c2 追加字符串,默认为空格
【返回】字符型
【说明】如果c1长度大于n,则返回c1左边n个字符
如果如果c1长度小于n,c2和c1连接后大于n,则返回连接后的右边n个字符
SQL> select lpad(‘杨‘,10,‘*‘) from dual;
LPAD(‘杨‘,10,‘*‘)
-----------------
********杨
不够字符则用*来填满
【相似】RPAD()在列的右边粘贴字符
【相反】LTRIM() 删除左边出现的字符串
在右边添加字符 rpad(c1,n[,c2])
RPAD(c1,n[,c2])
【功能】在字符串c1的右边用字符串c2填充,直到长度为n时为止
【参数】C1 字符串
n 追加后字符总长度
c2 追加字符串,默认为空格
【返回】字符型
【说明】如果c1长度大于n,则返回c1左边n个字符
如果如果c1长度小于n,c1和c2连接后大于n,则返回连接后的左边n个字符
如果如果c1长度小于n,c1和c2连接后小于n,则返回c1与多个重复c2连接(总长度>=n)后的左边n个字符
SQL> select rpad(‘gao‘,10,‘*a‘) from dual;
RPAD(‘GAO‘,10,‘*A‘)
-------------------
gao*a*a*a*
【相似】LPAD()在列的左边粘贴字符
【相反】RTRIM() 删除右边出现的字符串
删除左边字符 ltrim(c1,[,c2])
LTRIM(c1,[,c2])
【功能】删除左边出现的字符串
【参数】C1 字符串
c2 追加字符串,默认为空格
【返回】字符型
SQL> select LTRIM(‘ xiao gong jiang‘,‘ ‘) text from dual;
TEXT
---------------
xiao gong jiang
或者
SQL> select ltrim(‘ xiao gong jiang‘) text from dual;
TEXT
---------------
xiao gong jiang
SQL> select ltrim(‘x xiao gong jiang‘ ,‘x‘) text from dual;
TEXT
------------------
xiao gong jiang
删除右边字符 rtrim(c1,[,c2])
RTRIM(c1,[,c2])
【功能】删除右边出现的字符串
【参数】C1 字符串
c2 追加字符串,默认为空格
【返回】字符型
SQL> select RTRIM(‘ xiao gong jiang XXXX‘,‘X‘) text from dual;
TEXT
-----------------
xiao gong jiang
【相似】LTRIM()删除左边出现的字符串
【相反】RPAD() 在列的右边粘贴字符
替换子串字符 replace(c1,c2[,c3])
REPLACE(c1,c2[,c3])
【功能】将字符表达式值中,部分相同字符串,替换成新的字符串
【参数】
c1 希望被替换的字符或变量
c2 被替换的字符串
c3 要替换的字符串,默认为空(即删除之意,不是空格)
【返回】字符型
SQL> select replace(‘he love you‘,‘he‘,‘i‘) test from dual;
TEST
----------
i love you
字符串语音表示形式 soundex(c1)
SOUNDEX(c1)
【功能】返回字符串参数的语音表示形式
【参数】c1,字符型
【返回】字符串
【说明】相对于比较一些读音相同,但是拼写不同的单词是非常有用的。
计算语音的算法:
1.保留字符串首字母,但删除a、e、h、i、o、w、y
2.将下表中的数字赋给相对应的字母
(1) 1:b、f、p、v
(2) 2:c、g、k、q、s、x、z
(3) 3:d、t
(4) 4:l
(5) 5:m、n
(6) 6:r
3. 如果字符串中存在拥有相同数字的2个以上(包含2个)的字母在一起(例如b和f),或者只有h或w,则删除其他的,只保留1个
4.只返回前4个字节,不够用0填充
示例:
SQL> select soundex(‘two‘),soundex(‘too‘),soundex(‘to‘) from dual ;
SOUNDEX(‘TWO‘) SOUNDEX(‘TOO‘) SOUNDEX(‘TO‘)
-------------- -------------- -------------
T000 T000 T000
SQL> select soundex(‘cap‘),soundex(‘cup‘) from dual ;
SOUNDEX(‘CAP‘) SOUNDEX(‘CUP‘)
-------------- --------------
C100 C100
SQL> select soundex(‘house‘),soundex(‘horse‘) from dual ;
SOUNDEX(‘HOUSE‘) SOUNDEX(‘HORSE‘)
---------------- ----------------
H200 H620
截取字符串(全角算1字符) substr(c1,n1[,n2])
SUBSTR(c1,n1[,n2])
【功能】取子字符串
【说明】多字节符(汉字、全角符等),按1个字符计算
【参数】在字符表达式c1里,从n1开始取n2个字符;若不指定n2,则从第y个字符直到结束的字串.
【返回】字符型
SQL> select substr(‘1301234567890‘,3,8) test from dual;
TEST
--------
01234567
截取字符串(全角算2字符) substrb(c1,n1[,n2])
SUBSTRB(c1,n1[,n2])
【功能】取子字符串
【说明】多字节符(汉字、全角符等),按2个字符计算
【参数】在字符表达式c1里,从n1开始取n2个字符;若不指定n2,则从第y个字符直到结束的字串.
【返回】字符型,如果从多字符右边开始,则用空格表示。
SQL> select substr(‘我手机13012345678‘,4,11),substrb(‘我手机13012345678‘,4,11),substrb(‘我手机13012345678‘,3,11) test from dual;
SUBSTR(‘我手机13012345678‘,4,1 SUBSTRB(‘我手机13012345678‘,4, TEST
------------------------------ ------------------------------ -----------
13012345678 机13012345 手机1301234
替换子字符 translate(c1,c2,c3)
TRANSLATE(c1,c2,c3)
【功能】将字符表达式值中,指定字符替换为新字符
【说明】多字节符(汉字、全角符等),按1个字符计算
【参数】
c1 希望被替换的字符或变量
c2 查询原始的字符集
c3 替换新的字符集,将c2对应顺序字符,替换为c3对应顺序字符
如果c3长度大于c2,则c3长出后面的字符无效
如果c3长度小于c2,则c2长出后面的字符均替换为空(删除)
如果c3长度为0,则返回空字符串。
如果c2里字符重复,按首次位置为替换依据
【返回】字符型
SQL> select TRANSLATE(‘he love you‘,‘he‘,‘i‘),
2 TRANSLATE(‘重庆的人‘,‘重庆的‘,‘上海男‘),
3 TRANSLATE(‘重庆的人‘,‘重庆的重庆‘,‘北京男士们‘),
4 TRANSLATE(‘重庆的人‘,‘重庆的重庆‘,‘1北京男士们‘),
5 TRANSLATE(‘重庆的人‘,‘1重庆的重庆‘,‘北京男士们‘) from dual;
TRANSLATE(‘HELOVEYOU‘,‘HE‘,‘I‘ TRANSLATE(‘重庆的人‘,‘重庆的‘, TRANSLATE(‘重庆的人‘,‘重庆的重 TRANSLATE(‘重庆的人‘,‘重庆的重 TRANSLATE(‘重庆的人‘,‘1重庆的?
------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------
i lov you 上海男人 北京男人 1北京人 京男士人
删除左边和右边字符串 trim(c1 from c2)
TRIM(c1 from c2)
【功能】删除左边和右边出现的字符串
【参数】C2 删除前字符串
c1 删除字符串,默认为空格
【返回】字符型
SQL> select TRIM(‘X‘ from ‘XXXxiao gong jiangXXXX‘),TRIM(‘X‘ from ‘XXXxiaoXXgongXXXX‘) text from dual;
TRIM(‘X‘FROM‘XXXXIAOGONGJIANGX TEXT
------------------------------ ----------
xiao gong jiang xiaoXXgong