CASE表达式
Posted SailorG
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 表达式就无能为力了。
以上是关于CASE表达式的主要内容,如果未能解决你的问题,请参考以下文章