SQL高階查詢 case表示式

2021-06-18 23:38:52 字數 2674 閱讀 4840

case表示式可以在sql中實現if-then-else型的邏輯,oracle database 9i及以上版本支援case表示式,case工作方式與decode()類似

有兩種型別的case表示式:

1. 簡單case表示式,使用表示式確定返回值

case search_expression

when  expression1 then result1

when  expression2 then result2

when  expressionn then resultn

else default_result

end* search_expression是待求值的表示式

* expression1、expression2、...、expressionn是要與search_expression進行比較的表示式

* result1、result2、...、resultn是(每乙個可能出現的表示式所對應的)返回值,如果expression1的值等於search_expression,則返回result1,以此類推

* default_result是無法找到匹配的表示式時的預設返回值

例:select product_id,product_type_id,

case product_type_id

when 1  then 'book'

when 2  then 'video'

when 3  then '***'

when 4  then 'cd'

else  'magazine'

endfrom products;

product_id   product_type_id   caseprod

1                           1    book

2                           1    book

3                           2    video

4                           2    video

5                           2    video

6                           2    video

7                           3     ***

8                           3     ***

9                           4     cd

10                          4     cd

11                          4     cd

12                                 magazine

2. 搜尋case表示式,使用條件確定返回值

case

when  condition1 then result1

when  condition2 then result2

when  conditionn then resultn

else default_result

end* condition1、condition2、...、conditionn是待求值的表示式

* result1、result2、...、resultn是返回值(對應每個可能出現的條件),如果condition 1為真,則返回result1,以此類推

* default_result是當沒有為真的條件時返回的預設結果

例:select product_id,product_type_id,

case

when product_type_id=1  then 'book'

when product_type_id=2  then 'video'

when product_type_id=3  then '***'

when product_type_id=4  then 'cd'

else  'magazine'

endfrom products;

product_id   product_type_id   caseprod

1                           1    book

2                           1    book

3                           2    video

4                           2    video

5                           2    video

6                           2    video

7                           3     ***

8                           3     ***

9                           4     cd

10                          4     cd

11                          4     cd

12                                 magazine

SQL基礎 函式 謂詞 CASE表示式

numeric m,n 資料型別 m位數 包含小數字 n位小數字 sql sever select cast current timestamp as date as cur date oracle select current date from dual db2 select current d...

decode 和SQL語法case表示式

方法一 使用sql99標準通用語法中的case表示式,將職位是分析員的,工資 1000 職位是經理的,工資 800 職位是其它的,工資 400 select ename 姓名 job 職位 sal 原工資 case job when analyst then sal 1000 when manage...

case表示式詳解

格式一 case 條件表示式 when 條件表示式結果1 then 語句段1 when 條件表示式結果2 then 語句段2 when 條件表示式結果n then 語句段n else 條件表示式結果 end 格式二 case when 條件表示式1 then 語句段1 when 條件表示式2 the...