sql 中的case when

本文详细介绍了 SQL 中的 Case 函数使用方法,包括简单 Case 函数和 Case 搜索函数的区别及应用实例。通过具体示例展示了如何根据不同的条件返回特定值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

case   cp_pp    when '1'   then   sl

 

 

case  when  cp_pp='1' 

相当于

case   cp_pp   when  '1'

两者结果一样。

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 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

### SQL CASE WHEN 语句解析 #### 简单 CASE WHEN 语句 简单 `CASE` 表达式的结构如下: ```sql CASE input_expression WHEN when_expression_1 THEN result_expression_1 ... [ELSE else_result_expression] END ``` 此形式适用于当测试多个可能的结果是否等于某个单一表达式时。例如,如果想要将成绩转换成文字描述,则可以这样写[^1]。 #### 搜索条件 CASE WHEN 语句 更常见的 `CASE` 形式是带有搜索条件的形式,它可以更加灵活地定义各种逻辑判断标准: ```sql CASE WHEN condition_1 THEN result_1 ... [ELSE else_result] END ``` 这种情况下,不是比较两个值之间的相等关系,而是评估布尔表达式来决定执行哪一部分代码[^4]。 #### 实际案例展示 考虑一个场景,在学生评分表中存在分数字段 `score` ,现在希望基于这些数值生成一个新的等级列 `grade` 。可以通过以下方式完成这一操作: ```sql SELECT name, score, CASE WHEN score >= 90 THEN '优秀' WHEN score BETWEEN 80 AND 89 THEN '良好' WHEN score BETWEEN 70 AND 79 THEN '一般' ELSE '不合格' END AS grade FROM students; ``` 上述查询会根据学生的具体得分给予相应的评价标签[^3]。 #### 使用 CASE WHEN 进行分组统计 除了在选择列表里构建新列外,还可以利用 `CASE` 在聚合函数内实施分类汇总工作。比如按照性别区分平均工资水平: ```sql SELECT AVG(CASE gender WHEN 'M' THEN salary END) as male_avg_salary, AVG(CASE gender WHEN 'F' THEN salary END) as female_avg_salary FROM employees; ``` 这里通过 `GROUP BY` 和 `CASE` 的组合实现了按不同类别分别求均值的效果[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值