首页 > 其他 > 详细

CASE表达式

时间:2021-06-01 00:45:14      阅读:14      评论:0      收藏:0      [点我收藏+]

知识点:

● 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 表达式就无能为力了。

 

CASE表达式

原文:https://www.cnblogs.com/gzd1-sailoring/p/14833881.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!