?SQL中不同类型的函数
?在SELECT 语句中使用字符,数字,日期和转换函数
?使用条件表达式
两种SQL函数
单行函数:
?操作数据对象
?接受参数返回一个结果
?只对一行进行变换
?每行返回一个结果
?可以转换数据类型
?可以嵌套
?参数可以是一列或一个值
function_name [(arg1,arg2,...)]
字符型函数:
大小写控制函数
大小写控制函数:
这类函数改变字符的大小写。
LOWER
UPPER
INITCAP
显式数据类型转换:
SELECT TO_CHAR(sysdate,‘yyyy-mm-ddhh:mi:ss’)
FROM dual;
TO_CHAR(date, ‘format_model‘)
?使用 TO_DATE 函数将字符转换成数字:
TO_DATE(char[, ‘format_model‘])
TO_DATE(‘2012年10月29日08:10:21’,’yyyy“年”mm”月”dd“日”hh:mi:ss’) from dual
?使用TO_NUMBER函数将字符转换成日期:
TO_NUMBER(char[,‘format_model‘])
TO_NUMBER(‘¥1,234,567,890.00’,’L999,999,999,999.99’)from
dual
通用函数:
这些函数适用于任何数据类型,同时也适用于空值:
?NVL(expr1, expr2)
?NVL2(expr1, expr2, expr3)
?NULLIF(expr1, expr2)
?COALESCE(expr1, expr2, ..., exprn)
将空值转换成一个已知的值:(如果commission_pct为空是,commission_pct为原来的值,为空时,commission_pct为expr2)
–NVL(commission_pct,0)
NVL2 (expr1, expr2, expr3) : expr1不为NULL,返回expr2;为NULL,返回expr3。
SELECT last_name, salary, NVL(commission_pct,
0),
(salary*12) + (salary*12*NVL(commission_pct,
0)) AN_SAL
FROM employees;
条件表达式:
–CASE 表达式
–DECODE 函数
CASE expr WHEN comparison_expr1THEN return_expr1
[WHEN comparison_expr2
THEN return_expr2
WHEN comparison_exprn
THEN return_exprn
ELSE else_expr]
END
SELECT last_name, job_id, salary, CASE job_id WHEN 'IT_PROG' THEN 1.10*salary WHEN 'ST_CLERK' THEN 1.15*salary WHEN 'SA_REP' THEN 1.20*salary ELSE salary END "REVISED_SALARY" FROM employees;
select employee_id,last_name,department_id,case department_id when 10 then salary*1.1 when 20 then salary*1.2 when 30 then salary*1.3 end "new salary" from employees where department_id in (10,20,30)
SELECT last_name,job_id,
salary,
DECODE(job_id, ‘IT_PROG‘,
1.10*salary,
‘ST_CLERK‘, 1.15*salary,
‘SA_REP‘, 1.20*salary,
salary)
REVISED_SALARY
FROM employees;
版权声明:本文为博主原创文章,未经博主允许不得转载。
ORACLE 第3节 单行函数