语法:
select <列名>,
case when <求值表达式> then <表达式>
when <求值表达式> then <表达式>
when <求值表达式> then <表达式>
.. .
else <表达式>
end
from <表名>
when 子句中的“< 求值表达式>”就是类似“列 = 值”这样,返回值为真值。case 表达式会从对最初的when子句中的“< 求值表达式>”进行求值开始执行。如果结果为真(true),那么就返回then子句中的表达式,该条case表达式的执行到此为止,继续执行下一条。如果结果不为真,那么就跳转到下一条when子句的求值之中。如果直到最后的when子句为止返回结果都不为真,那么就会返回else
中的表达式,执行终止。
else子句也可以省略不写,这时会被默认为else null。此外,case表达式最后的“end”是不能省略的。
--搜索型case表达式
select product_name,
case product_type
when '衣服' then concat('A :' , product_type)
when '办公用品' then concat('B :' , product_type)
when '厨房用具' then concat('C :' , product_type)
else null
end as abc_product_type
from product;
--简单型case表达式
select product_name,
case when product_type = '衣服' then concat('A :' , product_type)
when product_type = '办公用品' then concat('B :' , product_type)
when product_type = '厨房用具' then concat('C :' , product_type)
else null
end as abc_product_type
from product;