单行函数介绍
---单行函数对单行操作
---每行返回一个结果
---有可能返回值与原参数数据类型不一致(转换函数)
---单行函数可以写在SELECT,WHERE,ORDER BY子句中
---有些函数没有参数,有些函数有一个或多个参数
---函数可以嵌套
字符函数
字符大小写操作函数:
LOWER(列名|表达式) :将字符转换为小写
UPPER(列名|表达式) :将字符转换为大写
INITCAP(列名|表达式) :将字符串首字母大写,其余小写。
字符处理函数:
CONCAT:l连接两个值 等同于|| eg: concat('Good','String') -->GoodString
SUBSTR:字符串截取 eg:substr('string',1,4)-->stri
LENGTH:字符长度 eg:length('string')-->6
INSTR:返回s1中,子串s2从n1开始,第n2次出现的位置。n1,n2默认值为1格式:INSTR(s1,s2,[,n1],[n2])
eg:instr('string','r')-->3
LPAD:左填充 eg:lpad(sal,5,'*')-->*****4000
RPAD:右填充 eg:rpad(sal,5,'*')-->4000*****
TRIM:去掉左右两边指定字符 eg:trim('S' FROM 'SSMITH'-->MITH
REPLACE:替换字符串 eg:replace('abc','b','d')--adc
数字函数
ROUND(列名|表达式,n):四舍五入到小数点后第n位
TRUNC(列名|表达式,n):截取到到小数点后第n位
MOD(m,n):m对n取余
常用日期函数
SYSDATE:返回系统日期
MONTHS_BETWEEN:返回两个日期间隔的月数 eg:MONTHS_BETWEEN(SYSDATE,hire_date)
ADD_MONTHS:在指定日期基础上加上相应的月数 eg:ADD_MONTHS(hire_date,3)
NEXT_DAY:返回某一日期的下一个指定日期 eg:NEXT_DAY('02-2月-06','星期一')
LAST_DAY:返回指定日期当月最后一天的日期
ROUND(date[,'fmt'])将date按照fmt指定的格式进行四舍五入,fmt为可选项,如果没有指定fmt,则默认为DD’,将date四舍五入为最近的天。
格式码:世纪CC,年YY,月MM,日DD,小时HH24,分MI,秒SS
RUNC(date[,'fmt'])将date按照fmt指定的格式进行截取,fmt为可选项,如果没有指定fmt,则默认为‘DD’,将date截取为最近的天。
EXTRACT:返回从日期类型中取出指定年、月、日 eg:EXTRACT (MONTH FROM HIRE_DATE)
MONTHS_BETWEEN:返回两个日期间隔的月数 eg:MONTHS_BETWEEN(SYSDATE,hire_date)
ADD_MONTHS:在指定日期基础上加上相应的月数 eg:ADD_MONTHS(hire_date,3)
NEXT_DAY:返回某一日期的下一个指定日期 eg:NEXT_DAY('02-2月-06','星期一')
LAST_DAY:返回指定日期当月最后一天的日期
ROUND(date[,'fmt'])将date按照fmt指定的格式进行四舍五入,fmt为可选项,如果没有指定fmt,则默认为DD’,将date四舍五入为最近的天。
格式码:世纪CC,年YY,月MM,日DD,小时HH24,分MI,秒SS
RUNC(date[,'fmt'])将date按照fmt指定的格式进行截取,fmt为可选项,如果没有指定fmt,则默认为‘DD’,将date截取为最近的天。
EXTRACT:返回从日期类型中取出指定年、月、日 eg:EXTRACT (MONTH FROM HIRE_DATE)
通用函数
与空值相关的一些函数
NVL(表达式1,表达式2):表达式如果为空时返回表达式2. eg:NVL(hire_date,'01-JAN-06')
NVL2(表达式1,表达式2,表达式3):1 不为空输出2,1为空输出3.eg:salary,NVL2(commission_pct,salary + commission_pct,salary)
NULLIF (表达式1, 表达式2):函数主要是完成两个参数的比较。当两个参数不相等时,返回值是第一个参数值;当两个参数相等时,返回值是空值。
COALESCE (表达式1, 表达式2, ... 表达式n):返回第一个不为空的参数 eg:COALESCE(commission_pct,salary*1.1, 100)
条件处理函数
CASE语法:
CASE expr
WHEN comparison_expr1 THEN return_expr1
[WHEN comparison_expr2 THEN return_expr2
WHEN comparison_exprn THEN return_exprn
ELSE else_expr]
END
WHEN comparison_expr1 THEN return_expr1
[WHEN comparison_expr2 THEN return_expr2
WHEN comparison_exprn THEN return_exprn
ELSE else_expr]
END
CASE commission_pct
WHEN 0.1 THEN '低'
WHEN 0.2 THEN '中'
WHEN 0.3 THEN '高'
ELSE '无'
END)
WHEN 0.1 THEN '低'
WHEN 0.2 THEN '中'
WHEN 0.3 THEN '高'
ELSE '无'
END)
DECODE(字段|表达式, 条件1,结果1[,条件2,结果2…,][,缺省
值])
值])
decode( commission_pct,
0.1,'低',
0.2,'中',
0.3 , '高',
'无') Commission
0.1,'低',
0.2,'中',
0.3 , '高',
'无') Commission