Oracle 常用内置系统函数总结
Oracle数据库内置系统函数主要分为以下类别:数学函数、字符串函数、日期函数、转换函数、聚集函数、分析/聚合函数
一、数学函数 ------------返回数字
abs(n):返回数字n的绝对值
ceil(n):返回>=数字n的最小整数
floor(n):返回<=数字n的最大整数
round(n,[m]):做四舍五入运算,如果m缺省则四舍五入到整数位
m<0,四舍五入到小数点的前m位,m>0四舍五入到小数点的后m位
trunc(n,[m]):截取数字,如果m缺省则将小数位截去
m<0,截取到小数点的前m位,m>0截取到小数点的后m位
运算结果:
1 ABS(-2.3) CEIL(-2.6) CEIL(2.6) FLOOR(-2.6) FLOOR(2.6) ROUND(-666.588) ROUND(-666.588,2) ROUND(-666.588,-2) TRUNC(-666.588) TRUNC(-666.588,2) TRUNC(-666.588,-2) 2 ---------- ---------- ---------- ----------- ---------- --------------- ----------------- ------------------ --------------- ----------------- ------------------ 3 2.3 -2 3 -3 2 -667 -666.59 -700 -666 -666.58 -600
sqrt(n):返回数字n(n必须大于0)的平方根
power(n,m):返回数字n的m次幂,底数n和指数m都可以是任意数字,但是如果底数n为负数则指数m必须为正数
exp(n):返回e(2.71828183....)的n次幂
ln(n):返回数字n(n必须大于0)的自然对数
log(n,m):返回底数为n(除0及1的正整数)的真数为m(任何正整数)对数
mod(n,m):返回数字n/m的余数,如果数字m=0则返回n
1 --demo:sqrt(),power(),exp(),ln(),log(),mod() 2 SELECT sqrt(4),power(2,3),exp(1),ln(10),log(2,8),mod(5,2) 3 FROM dual
运算结果:
1 SQRT(4) POWER(2,3) EXP(1) LN(10) LOG(2,8) MOD(5,2) 2 ---------- ---------- ---------- ---------- ---------- ---------- 3 2 8 2.71828182 2.30258509 3 1
cos(n):返回数字n(弧度单位表示的角度值)的余弦值
cosh(n):返回数字n的双曲余弦值
acos(n):返回数字n的反余弦值,求的结果单位为弧度,n的范围为 -1 < n < 1
sin(n):返回数字n(弧度单位表示的角度值)的正弦值
sinh(n,m):返回数字n的双曲正弦值
asin(n,m):返回数字n的反正弦值,求的结果单位为弧度,n的范围为 -1 < n < 1
tan(n):返回数字n(弧度表示的角度值)的正切值
tanh(n):返回数字n的双曲正切值
atan(n):返回数字n的反正切值,求的结果单位为弧度,n的范围任意数值
atan(n,m):返回数字n/m的反正切值,求的结果单位为弧度,你可以为任意数值,m不可为0
1 --demo:cos(),cosh(),acos(),sin(),sinh(),asin(),tan(),tanh(),atan(),atan() 2 SELECT cos(0.5),cosh(2),acos(1), 3 sin(0.5),sinh(2),asin(0), 4 tan(0.5),tanh(2),atan(8),atan(16/2) 5 FROM dual
运算结果:
1 COS(0.5) COSH(2) ACOS(1) SIN(0.5) SINH(2) ASIN(0) TAN(0.5) TANH(2) ATAN(8) ATAN(16/2) 2 ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- 3 0.87758256 3.76219569 0 0.47942553 3.62686040 0 0.54630248 0.96402758 1.44644133 1.44644133
二、字符串函数 ------------返回字符值
ascii(n):返回字符c的ascii值
chr(n):将ascii值转换为对应的字符
initcap(s):将字符串s所有的单词(单词是用.空格或给字母数字字符由空格,控制字符,标点符号进行分隔)的首字母大写,其余小写
lower(s):将字符串s中所有的字符转换为小写
upper(s):将字符串s中所有的字符转换为大写
concat(s1,s2):将字符串s2连接在s1后面,等同于操作符||
length(s):将返回字串s的长度,返回的长度包括其中的所有空格(尾部空格也算);如果s为null,则返回null
1 --ascii(),chr(),concat(),initcap(), lower(),upper(), length(), 2 SELECT ascii('A'),chr(65),concat('Hello','World'), 3 initcap('hello woRld'), 4 lower('HeLLo woRld'),upper('HeLLo woRld'), 5 length('HeLLo woRld'),length('天下英雄出我辈') 6 FROM dual
运算结果:
1 ASCII('A') CHR(65) CONCAT('HELLO','WORLD') INITCAP('HELLOWORLD') LOWER('HELLOWORLD') UPPER('HELLOWORLD') LENGTH('HELLOWORLD') 2 ---------- ------- ----------------------- --------------------- ------------------- ------------------- -------------------- 3 65 A HelloWorld Hello World hello world HELLO WORLD 11
lpad(s1,n,s2):在字串s1的左端填充字串s2,直至填充后的s1的总长度为n
如果不指定s2则默认为空格
如果s1的长度>n,则直接返回s1左端的n个字符
rpad(s1,n,s2):在字串s1的右端填充字串s2,直至填充后的s1的总长度为n
如果不指定s2则默认为空格
如果s1的长度>n,则直接返回s1左端的n个字符
1 --demo:lpad、rpad 2 SELECT lpad('a',10,'8'),lpad('SnnnnnnnnR',6,'8'), 3 rpad('a',10,'8'),rpad('SnnnnnnnnR',6,'8') 4 FROM dual
运算结果:
1 LPAD('A',10,'8') LPAD('SNNNNNNNNR',6,'8') RPAD('A',10,'8') RPAD('SNNNNNNNNR',6,'8') 2 ---------------- ------------------------ ---------------- ------------------------ 3 888888888a Snnnnn a888888888 Snnnnn
instr(s1,s2,n,m):取得子串s2在字串s1中的位置
n表示在s1中开始搜索的位置,m表示字串s2出现的次数
如果n为负数,则表示从尾部开始搜索,n与m默认为1
substr(s1,m,n):取得字串s1从m开始,长度为n的子串,m>0表示从头开始搜索,m<0表示从尾开始
1 -- instr(), substr() 2 SELECT instr('888arrayarray','array',1,1) ,instr('888arrayarray','array',1,2), 3 instr('888arrayarray','array',-1,1),instr('888arrayarray','array',-1,2), 4 substr('纵横天下',1,2),substr('array',-4,3) 5 FROM dual
运算结果:
INSTR('888ARRAYARRAY','ARRAY', INSTR('888ARRAYARRAY','ARRAY', INSTR('888ARRAYARRAY','ARRAY', INSTR('888ARRAYARRAY','ARRAY', ------------------------------ ------------------------------ ------------------------------ ------------------------------ 4 9 9 4
ltrim(s1,str):从左端开始逐一取得字串s1左端包含的str中的任何字符
当遇到不是str中的字符是,则结束并返回剩余结果
rtrim(s1,str):从右端开始逐一取得字串s1右端包含的str中的任何字符
当遇到不是str中的字符是,则结束并返回剩余结果
trim(c FROM str):从字串str的头部、尾部、或两端截去字符c(c只能够是一个字符)
当遇到不是str中的字符是,则结束并返回剩余结果
1 SELECT ltrim('terry','t'),ltrim('terry','ter'),ltrim('terry','e'), 2 rtrim('terry','y'),rtrim('terry','ry'),rtrim('terry','yre'), 3 trim('e' from 'terry'),trim('t' from 'terry'),trim('y' from 'terryy') 4 FROM dual
运行结果: