Oracle学习(三):单行函数(三)

2014-11-24 15:10:24 · 作者: · 浏览: 2
¥1,300.00 已选择14行。 SQL> host cls SQL> --通用函数 SQL> --nvl2(a,b,c) 当a=null时,返回c,否则返回b SQL> select sal*12+nvl2(comm,comm,0) from emp; SAL*12+NVL2(COMM,COMM,0) ------------------------ 9600 19500 15500 35700 16400 34200 29400 36000 60000 18000 13200 SAL*12+NVL2(COMM,COMM,0) ------------------------ 11400 36000 15600 已选择14行。 SQL> host cls SQL> --nullif(a,b) 当a=b时,返回null,否则返回a SQL> select nullif('abc','abc') from dual; NUL --- SQL> select nullif('abc','abdc') from dual; NUL --- abc SQL> host cls SQL> -- ¥1,600.00 SQL> ¥1,250.00 SP2-0042: 未知命令 "¥1,250.00" - 其余行忽略。 SQL> ¥2,975.00 SP2-0042: 未知命令 "¥2,975.00" - 其余行忽略。 SQL> ¥1,250.00 SP2-0042: 未知命令 "¥1,250.00" - 其余行忽略。 SQL> ¥2,850.00 SP2-0042: 未知命令 "¥2,850.00" - 其余行忽略。 SP2-0044: 要获取已知命令的列表, 请输入 HELP; 输入 EXIT 可退出。 SQL> ¥2,450.00 SP2-0042: 未知命令 "¥2,450.00" - 其余行忽略。 SQL> ¥3,000.00 SP2-0042: 未知命令 "¥3,000.00" - 其余行忽略。 SQL> ¥5,000.00 SP2-0042: 未知命令 "¥5,000.00" - 其余行忽略。 SQL> ¥1,500.00 SP2-0042: 未知命令 "¥1,500.00" - 其余行忽略。 SP2-0044: 要获取已知命令的列表, 请输入 HELP; 输入 EXIT 可退出。 SQL> host cls SQL> --COALESCE 从左至右找到第一个不为null的值 SQL> select comm,sal,COALESCE(comm,sal) from emp; COMM SAL COALESCE(COMM,SAL) ---------- ---------- ------------------ 800 800 300 1600 300 500 1250 500 2975 2975 1400 1250 1400 2850 2850 2450 2450 3000 3000 5000 5000 0 1500 0 1100 1100 COMM SAL COALESCE(COMM,SAL) ---------- ---------- ------------------ 950 950 3000 3000 1300 1300 已选择14行。 SQL> host cls SQL> --根据职位涨工资 总裁1000 经理800 其他400 SQL> select ename,job,sal 2 from emp; ENAME JOB SAL ---------- --------- ---------- SMITH CLERK 800 ALLEN SALESMAN 1600 WARD SALESMAN 1250 JONES MANAGER 2975 MARTIN SALESMAN 1250 BLAKE MANAGER 2850 CLARK MANAGER 2450 SCOTT ANALYST 3000 KING PRESIDENT 5000 TURNER SALESMAN 1500 ADAMS CLERK 1100 ENAME JOB SAL ---------- --------- ---------- JAMES CLERK 950 FORD ANALYST 3000 MILLER CLERK 1300 已选择14行。 SQL>
select ename,job,sal 涨前薪水, case job when 'PRESIDENT' then sal+1000 2 when 'MANAGER' then sal+800 3 else sal+400 4 end 涨后薪水 5 from emp; ENAME JOB 涨前薪水 涨后薪水 ---------- --------- ---------- ---------- SMITH CLERK 800 1200 ALLEN SALESMAN 1600 2000 WARD SALESMAN 1250 1650 JONES MANAGER 2975 3775 MARTIN SALESMAN 1250 1650 BLAKE MANAGER 2850 3650 CLARK MANAGER 2450 3250 SCOTT ANALYST 3000 3400 KING PRESIDENT 5000 6000 TURNER SALESMAN 1500 1900 ADAMS CLERK 1100 1500 ENAME JOB 涨前薪水 涨后薪水 ---------- --------- ---------- ---------- JAMES CLERK 950 1350 FORD ANALYST 3000 3400 MILLER CLERK 1300 1700 已选择14行。 SQL> select ename,job,sal 涨前薪水,decode(job,'PRESIDENT',sal+1000, 2 'MANAGER', sal+800, 3 sal+400)涨后薪水 4 from emp; ENAME JOB 涨前薪水 涨后薪水 ---------- --------- ---------- ---------- SMITH CLERK 800 1200 ALLEN SALESMAN 1600 2000 WARD SALESMAN 1250 1650 JONES MANAGER 2975 3775 MARTIN SALESMAN 1250 1650 BLAKE MANAGER 2850 3650 CLARK MANAGER 2450 3250 SCOTT ANALYST 3000 3400 KING PRESIDENT 5000 6000 TURNER SALESMAN 1500 1900 ADAMS CLERK 1100 1500 ENAME JOB 涨前薪水 涨后薪水 ---------- --------- ---------- ---------- JAMES CLERK 950 1350 FORD ANALYST 3000 3400 MILLER CLERK 1300 1700 已选择14行。 SQL> spool off