1数值型函数:
1.1绝对值、取余、判断数值正负函数
1)ABS(n) 函数。用于返回绝对值。该参数输入一个参数,参数类型为数值型,加入参数为可以隐式转换为数值类型,也可以
例:select ABS(100),ABS(-100),ABS('100') FROM DUAL;
2)MOD(n2,n1)函数。该函数表示返回n2/n1的余数。参数为任意数值或可以隐式转换为数值的类型。
例:select MOD(5,2),MOD(8/3,5),MOD('10',5),MOD(-10,6),MOD(1,0) FROM DUAL;
3)SIAN(N)函数。返回参数n的符号,正数返回1,0返回0,负数返回-1.但如果n为BINARY_FLOAT或FINARY_DOUBLE类型时,n>=0
或者n=NaN函数会返回1.
例:select sign('9'),sign(-9),sign(0.00),sign(-2*'9') from dual;
1.2三角函数:
cos(n):返回参数n的余弦,n为弧度表示的角度:
例:select cos(3.1415926),cos('3.1415926') from dual;
acos(n):返回n的反余弦值
cosh(n):返回n的双曲余弦值
sin(n):返回n的正弦值
asin(n):返回n的反正弦值
tan(n):返回n的正切值
tanh(n):返回n的双曲正切值
atan(n):返回n的反正切值
1.3返回以指定数值为准整数的函数
CELL(n)函数。返回大于等于输入参数的最小整数。
例:select cell(10),cell('10.5'),cell(-10.2) from dual;
FLOOR(N):返回结果是小于或等于参数的最大整数。
例:select floor(10),floor('10.5'),floor(-10.2) from dual;
1.4指数,对数函数
sqrt(n):函数。该函数返回n的平方根。n不能为负数,为浮点数时返回nan。
例:select sort(100),sqrt('53.9') from dual;
power(n2,n1):利用该函数可以得到n2的n1次幂的结果。n2为负数,则n1必须为整数。
log(n1,n2)函数。利用该函数可以返回以n1为底n2的对数。n1是除1和0以外的任意正数。
例:select log(10.100),log(10.5,'100'),power(10,2) from dual;
1.5四舍五入截取函数
round(n,integer)函数。它将数值n四舍五入成第二个参数指定的形式的十进制数。
例:select round(100.23456,4),round(100.23456,2.56),round(155.23456,-2) from dual;
结果: 100.2345 100.23 200
trunc(n,integer) 函数。它把数值n根据integer的值进行截取
例:select trunc(100.23456,4)trunc(100.23456,2.56),trunc(155.23456,-2),trunc(155.234546) from dual;
结果: 100.2345 100.23 100 155
2.字符型函数:
2.1 ASCII码与字符转换函数
CHR(n[USING NCHAR_CS])函数。根据指定的字符集,将给定的ASCII码转换为字符。
例:select CHR(65) || CHR(66) || CHR(67) ABC,CHR(54678) FROM DUAL;
结果: ABC 諙
2.2 获取字符串长度函数
length(char) :获取到指定字符串的长度
例: select length('abcde我fghi') from dual;
结果: 10
2.3 字符串截取函数
substr(char,position,substring_length) : char:原始字符串,
position:截取开始位置,初始为1,负数从右边算起,
substring_length:截取的长度
例:select substr('abcde我fghi',5,2),substr('abcde我fghi',5,2) from dual;
结果: e我 我f
2.4 字符串连接函数
concat(char1,char2) 或者是 ||
select concat('我爱你','中国'), '山有木兮' || '木有枝' from dual;
结果: 我爱你中国 山有木兮木有枝
2.5 字符串搜索函数:在一个指定字符串中搜索是否存在另一个字符串。
instr(string,subString,position[,occurrence])
例:select instr('this is a 测试!','测'),instr('this is a 测试!','s',-1) from dual;
2.6 字母大小写转换函数
upper(char):参数转换成大写
lower(char):参数转换成小写
initcap(char):首字母转换成大写
2.7 带排序参数的字母大小写转换参数
nls_initcap(char[,nlsparam]),将指定参数的第一个字母转换成大写。
nls_upper(char[,nlsparam])将指定参数变为大写。
nls_lower(char[,nlsparam]) 将指定参数转换为小写。
2.8 指定参数排序函数
nlssort(char[,nlsparam])函数,根据nlsparam指定的方式对char进行排序。
2.9 替换字符串函数
replace(char,search_string,replacement_string):替换char中的search_string为replacement_string;
例:select replace('this is a test','tes','resul') from dual;
2.10 字符串填充函数
rpad('字符串',n,'要填充的字符串'):在字符串右边填充字符到指定长度n
lpad('字符串',n,'要填充的字符串'):在字符串左边填充字符到指定长度n
2.11 删除字符串首位指定字符的函数
trim():删除指定的前缀或尾随的字符,默认删除空格
2.12字符集名称和ID互换函数
nls_charset_id(string):根据字符集名称得到对应ID
nls_charset_name(number):根据字符集ID得到对应的名字
3.日期型函数
3.1系统日期,时间函数
SYSDATE函数。得到当前系统的日期
例:select TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') FROM DUAL;
SYSTIMESTAMP函数。返回系统时间。
例:select systimestamp from dual;
3.2得到数据库时区函数
dbtimezone函数:返回数据库时区
3.3为日期加上指定月份函数
add_months(date,integer):指定日期data加一个integer月份数,负数表示减去的月份数
3.4返回指定月份最后一天的函数
next_day(date)函数
3.5返回指定日期后一周的日期函数
next_day(date,char)函数;
3.6返回回话所在时区当前日期函数
current_date函数;
3.7提取指定日期特定部分的函数
EXTRACT函数:从指定的时间当中提取到指定的日期部分。
例:select extract(year from sysdate) year from dual;
3.8得到两个日期之间的月份数
months_between(date1,date2)函数。返回两个时间月份的差值:
3.9时区时间转换函数
new_time(date,temezone1,timezone2)函数。该函数将返回时间date在时区timezone1转换到时区timezone2的时间。
3.10日期四舍五入,截取函数
round(date,fmt)函数。将函数date舍入到fmt指定的形式。如果参数fmt被省略,则date将被处理到最近的一天。
例:select to_char(round(to_date('2010-5-1 21:00:00','YYYY-MM-DD HH24:MI:SS')),'YYYY-MM-DD HH24:MI:SS') FROM DUAL;
TRUNC(DATE,FMT)函数,该函数将date截取到fmt指定的形式,如果fmt省略,则截取到最近的日期。
4.转换函数
4.1字符串转ASCII类型字符串函数
ASCII(char)函数。
例:select ASCIISTR('这是测试') FROM DUAL;
4.2二进制转十进制函数
bin_to_num(data[,data...])函数,该函数可以将二进制转化成对应的十进制。data表示二进制数,一位用‘,’隔开
例:select bin_to_num(1,1,0) from dual;
4.3数据类型转换函数
cast(expr as type_name)函数。将expr参数转换成type_name类型c,多用于数字与字符,字符与日期之间的转换。
4.4字符串和ROWID相互转换函数
chartorowid(char)函数。该函数将字符串类型转换成rowid类型。
ROWIDTOCHAR(rowid)函数,将行记录的rowid转换成字符串。
ROWIDTONCHAR(rowid)函数,将rowid转换晨成varchar2类型。
4.5字符串在字符串间转换函数
convert函数:用于把字符串从一个字符集转到另一个字符集。
4.6十六进制字符串与RAW类型相互转换函数
HEXTORAW(char)函数。把十六进制的字符串转换成raw类型的数据
RAWTOHEX(raw):把raw类型表示成一个由十六进制字符标识的串,返回varchar2类型。
4.7数值转换成字符型函数
TO_CHAR(number):将一个数值型参数转换成一个字符型数据。
TO_CHAR(date):把一个日期型数据转换成一个字符型数据。
4.8字符转日期型函数
TO_DATE(char[,fmt[,nlsparam]])函数:将字符型函数转成日期型数据。
例:select TO_DATE('2018-8-9','YYYY-MM-DD','MONTH') FROM DUAL;
结果: 7月
4.9字符型转数字函数
TO_NUMBER(expr[,fmt[,nlsparam]])函数:将字符串转换成数字
4.10全角转半角函数
TO_SINCLE_BYTE(char)函数。将全角转换成半角。
5.NULL函数
5.1返回表达式为null的函数
coalesce(expr)函数:返回列表中第一个不为null的表达式。如果都为null,则返回一个null。
5.2排除指定条件函数
lnnvl(condition)函数:该函数可以得到除了condition要求条件之外的数据,包括null的条件,
例:select * from productinfo where lnnvl(quantity>=70);
5.3替换null值函数
nvl(exprl,expr2)函数:如果exprl是null,就替换成expr2的值,否则返回expr1的值。
nvl2(expr1,expr2,expr3)函数:如果expr1是null,就返回expr3的值,当expr1不为空时,则返回expr2的值。
6.集合函数
6.1求平均值函数
AVG([distinctlall]expr)函数,求取指定列的平均值。
distinct:去除重复的值。
all:所有值
expr:表达式,只能是数值类型
例:select avg(all productprice+100) from productinfo;
6.2求记录数量函数
count(*|[distinct][all]expr)函数。该函数可以用来计算记录的数量或某列的个数。指定列名,或*表示全选。
*:计算所有记录
distinct:去重
all:所有的
expr:要计算的对象,通常是表的列
例:select count(dixtinct productprice) from productinfo where productprice < 3000;
6.3返回最大最小值函数
MAX([distinct|a]expr)函数。返回指定列中的最大值
例:select * from productinfo where productrice=(select max(productprice) from productinfo);
MIN([distincr|all]expr)函数。返回指定列中的最小值
6.4求和函数
sum([distincr|all]expr)函数。该函数不同于count,它分组计算指定列的和。不使用分组,则默认整个表为一组。
例:select sum(all quantity),category from productinfo group by category;
7.其他函数:
7.1返回登录名函数
user函数:返回当前会话的登录名
select user from dual;
7.2返回回话以及上下文信息函数
userenv(paraameter)函数:返回当前回话的信息。
例:select userenv("isdba") from dual ;
sys_context(namespace,parameter)函数:得到oracle已经创建的context,名为userenv的属性对应值。
例:select sys_context('userenv','session_user') session_user from dual;
7.3表达式匹配函数
decode(expr,search,result[,search1,result][,default])函数:当expr符合条件search时就返回result的值,类似swith-cash
例:select productname,quantity,decode(sign(quantity-100),1,'充足',-1,'不足',0,'不足') from productinfo;