CASE表达式

知识点:

● CASE表达式分为简单CASE表达式搜索CASE表达式两种。搜索CASE表达式包含简单CASE表达式的全部功能。
● 虽然CASE表达式中的ELSE子句可以省略,但为了让 SQL语句更加容易理解,还是希望大家不要省略。
CASE表达式中的END不能省略
● 使用CASE表达式能够将SELECT语句的结果进行组合。
● 虽然有些 DBMS提供了各自特有的CASE表达式的简化函数,例如Oracle中的DECODE和MySQL中的IF,等等,但由于它们并非通用的函数,功能上也有些限制,因此有些场合无法使用。

CASE WHEN <求值表达式> THEN <表达式>
 WHEN <求值表达式> THEN <表达式>
 WHEN <求值表达式> THEN <表达式>
 . . .
 ELSE <表达式>
END  [as 字段别名]

整个case语句只是1列值。分支语句。

 

组合使用:

SUM ( CASE

                     WHEN product_type = '衣服'  THEN sale_price

                     ELSE 0 

                     END

        ) AS sum_price_clothes,

分支少的时候可以使用sum(if(判断条件,真时返回值,假时返回值))替换

-----------------------------------------------------------

搜索CASE表达式与简单CASE表达式对比

-- 使用搜索CASE表达式的情况(重写代码清单6-41)
SELECT product_name,
       CASE WHEN product_type = '衣服' 
            THEN 'A :' | |product_type
            WHEN product_type = '办公用品' 
            THEN 'B :' | |product_type
            WHEN product_type = '厨房用具' 
            THEN 'C :' | |product_type
            ELSE NULL
            END AS abc_product_type
FROM Product;


-- 使用简单CASE表达式的情况 SELECT product_name, CASE product_type WHEN '衣服' THEN 'A :' | | product_type WHEN '办公用品' THEN 'B :' | | product_type WHEN '厨房用具' THEN 'C :' | | product_type ELSE NULL END AS abc_product_type FROM Product;

简单CASE表达式,虽然看上去简化了书写,但是想要在 WHEN 子句中指定不同列时,简单 CASE 表达式就无能为力了。

 

posted @ 2021-05-31 23:35  SailorG  阅读(201)  评论(0编辑  收藏  举报