Case表示式與decode()函式
Case表示式與decode()函式兩者都是根據欄位或者表示式作為判斷條件,當條件滿足
某個值或者範圍時,對應有一個結果。多個結果由多個互補相同的條件限制。所以這兩個的用法
很接近,大同小異,只是case的用法更靈活一些。
以下是透過例子講述一下:(根據不同的職位進行工資調整)
檢視emp資訊:職位為SALESMAN,升工資為1.5倍,職位為MANAGER,升工資為2.0倍,職位為PRESIDENT,升工資為3.0倍,其他不升。
1、decode:
decode(column|ecpression,search1,result1,
[search2,result2,... ...]
[,default] );
欄位或者表示式作為條件,當條件為search1,返回結果result1,...當不滿足以上的條件,指定預設值為default。
SQL> select ename,job,deptno,sal,
2 decode(job,'PRESIDENT',3*sal,'MANAGER',2*sal,'SALESMAN',1.5*sal,sal) salary
3 from emp
4 order by deptno;
ENAME JOB DEPTNO SAL SALARY
---------- --------- ---------- ---------- ----------
CLARK MANAGER 10 2450 4900
KING PRESIDENT 10 5000 15000
MILLER CLERK 10 1300 1300
JONES MANAGER 20 2975 5950
FORD ANALYST 20 3000 3000
ADAMS CLERK 20 1100 1100
SMITH CLERK 20 800 800
SCOTT ANALYST 20 3000 3000
WARD SALESMAN 30 1250 1875
TURNER SALESMAN 30 1500 2250
ALLEN SALESMAN 30 1600 2400
ENAME JOB DEPTNO SAL SALARY
---------- --------- ---------- ---------- ----------
JAMES CLERK 30 950 950
BLAKE MANAGER 30 2850 5700
MARTIN SALESMAN 30 1250 1875
14 rows selected.
2、Case:(常搭配 when...then...)
SQL> select ename,job,deptno,sal,
2 Case job
3 when 'PRESIDENT'then 3*sal
4 when 'MANAGER' then 2*sal
5 when 'SALESMAN' then 1.5*sal
6 else sal
7 end salary
8 from emp
9 order by deptno;
ENAME JOB DEPTNO SAL SALARY
---------- --------- ---------- ---------- ----------
CLARK MANAGER 10 2450 4900
KING PRESIDENT 10 5000 15000
MILLER CLERK 10 1300 1300
JONES MANAGER 20 2975 5950
FORD ANALYST 20 3000 3000
ADAMS CLERK 20 1100 1100
SMITH CLERK 20 800 800
SCOTT ANALYST 20 3000 3000
WARD SALESMAN 30 1250 1875
TURNER SALESMAN 30 1500 2250
ALLEN SALESMAN 30 1600 2400
ENAME JOB DEPTNO SAL SALARY
---------- --------- ---------- ---------- ----------
JAMES CLERK 30 950 950
BLAKE MANAGER 30 2850 5700
MARTIN SALESMAN 30 1250 1875
14 rows selected.
以上查詢出來的結果是一樣的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31392094/viewspace-2126003/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 《MySQL 入門教程》第 13 篇 CASE 表示式與控制流函式MySql函式
- Oracle Decode()函式和CASE語句的比較Oracle函式
- SQL CASE 表示式SQL
- decode函式函式
- Python函式與lambda 表示式(匿名函式)Python函式
- 何時使用函式表示式與函式宣告函式
- 【SQL 學習】case 表示式SQL
- 【開發篇sql】 條件和表示式(七) decode,case when,connect by 語句SQL
- oracle中的decode(函式)Oracle函式
- javascript 的函式宣告與表示式對比JavaScript函式
- C++ lambda 表示式與「函式物件」(functor)C++函式物件
- 瞭解GaussDB SQL中CASE表示式SQL
- javascript-函式表示式JavaScript函式
- 函式表示式–遞迴函式遞迴
- oracle的case函式和case控制結構Oracle函式
- Oracle中Decode()函式的使用Oracle函式
- 【SQL 學習】函式之DECODE()SQL函式
- Kotlin 之高階函式與Lambda表示式與閉包Kotlin函式
- JavaScript函式宣告和函式表示式區別JavaScript函式
- 函式宣告和函式表示式的區別函式
- JS函式表示式——函式遞迴、閉包JS函式遞迴
- Lambda表示式入門--函數語言程式設計與函式式介面函數程式設計函式
- 神奇的 SQL 之 CASE表示式,妙用多多 !SQL
- Oracle正規表示式函式Oracle函式
- 函式表示式和函式宣告簡單介紹函式
- 03 shell程式設計之case語句與函式程式設計函式
- [轉]decode函式和行列互換函式
- matlab表示函式Matlab函式
- kotlin 函式和 Lambda 表示式Kotlin函式
- jdk1.8Lambda函式表示式JDK函式
- 課時21:函式:lambda表示式函式
- jdk1.8-Lambda函式表示式JDK函式
- 正規表示式☞相關函式函式
- Kotlin 函式魔法 - lambda 表示式Kotlin函式
- 通用函式和條件表示式函式
- 5.函式和lambda表示式函式
- 初識Lambda表示式(匿名函式)函式
- 正規表示式match()函式和exec()函式的區別函式