在SQL中使用条件逻辑涉及到的关键字有:case when...then...else...end ;
以case开头,end结束。
when和then相当于“如果...那么”,
else相当于如果以上都不成立,那么就...
一般用于将数据库内字段值转换为可以看懂的值(说明性质的),例如,数据库中存储的性别为1和2,1代表男,2代表女,如果我们直接返回1和2 的话客户端不一定清楚这个对应规则,这时我们就可以利用这个条件逻辑,把1和2 转换为客户端可以看懂的男和女
使用说明
Case具有两种格式。简单Case函数和Case搜索函数。
--简单Case函数
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
--Case搜索函数
CASE WHEN sex = '1' THEN '男'
WHEN sex = '2' THEN '女'
ELSE '其他' END
实际操作
例如我们在订单表中查询的时候, 订单表中肯有异常的数据,比如数量和单价有可能为负数或者NULL,而我们在查询的时候可以把负数转换为正数,把NULL转换为0输出。
- 原数据
- 查询语句
/*
订单中数量和单价为负数的时候,转换为正数;为null的时候转换为0输出
*/
select goodsName,
(case
when quantity is null then 0
when quantity < 0 then abs(quantity)
else quantity
end) as quantity,
(case
when item_price is null then 0
when item_price < 0 then abs(item_price)
else item_price
end) as item_price,
orderNo,userId,userName,orderTime,supplier
from oderlist
- 查询结果