SQL利用Case When Then Else End 多条件判断

本文详细解析了 SQL 中的 Case 语句用法,包括如何根据不同条件选择返回不同的列值。通过具体示例展示了当某列不为空时返回该列值的应用场景。
 

Select

Case

    When a is not null then a

    When b is not null then b

    When c is not null then c

    When d is not null then d

    Else ''

End 列名

From Table Name

### SQL Server 中 `CASE WHEN THEN ELSE END` 语句的用法 #### 简介 `CASE WHEN THEN ELSE END` 是一种在 SQL 查询中实现条件逻辑判断的强大工具。这种结构允许根据特定条件返回不同值,从而增强查询灵活性。 #### 语法概述 该表达式有两种主要形式:简单 CASE 和搜索 CASE。通常使用的搜索 CASE 更加灵活,适用于多种复杂场景[^3]。 #### 基本语法格式 ```sql CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE default_result END ``` #### 实际应用案例 假设有一个名为 `Orders` 的表,其中包含订单数据以及客户满意度评分字段 `CustomerRating` (取值范围为0到5),现在希望创建一个新的列显示评价等级: ```sql SELECT OrderID, CustomerRating, CASE WHEN CustomerRating >= 4 THEN 'Very Satisfied' WHEN CustomerRating BETWEEN 3 AND 3.9 THEN 'Satisfied' WHEN CustomerRating BETWEEN 2 AND 2.9 THEN 'Neutral' WHEN CustomerRating < 2 THEN 'Dissatisfied' ELSE 'Unknown Rating' END AS SatisfactionLevel FROM Orders; ``` 此查询会依据客户的评分给出相应的满意程度描述,并将其作为新列 `SatisfactionLevel` 显示出来。 #### 处理 NULL 值的情况 当处理可能含有NULL的数据时,可以利用 IS NULL 或者 COALESCE 函数来进行适当转换: ```sql SELECT EmployeeName, CommissionRate, CASE WHEN CommissionRate IS NOT NULL AND CommissionRate > 0 THEN 'Eligible for Bonus' ELSE 'Not Eligible or No Data Available' END AS BonusStatus FROM Employees; ``` 这段代码检查员工是否有资格获得奖金,如果佣金率为空,则认为没有可用的信息。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值