SQL之CASE WHEN用法

本文介绍了一种使用SQL CASE语句进行学生成绩等级判断的方法,包括如何处理NULL值和非数字值,确保THEN和ELSE后的值类型一致,避免SQL错误。

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

参考链接:https://blog.youkuaiyun.com/rongtaoup/article/details/82183743

select score, (
	case when t.enabled>=60 then '及格'
		  when t.score<60 then '不及格'          
		  when t.score is null then '考试缺席'  --如果score的值为null时
		  else enabled end       --控制如果score不是数字并且null值时输出原数据
	) as 成绩等级 from student t

注意:

  1. THEN后边的值与ELSE后边的值类型应一致,否则会报错
  2. 判断数据为null的写法
CASE WHEN score IS NULL THEN '缺席考试' ELSE '正常' END
### Hive SQLCASE WHEN用法 #### 1. **CASE WHEN THEN 结构** Hive 支持两种形式的 `CASE` 表达式,分别是简单条件匹配和复杂逻辑判断。 - **简单条件匹配** 这种形式适用于简单的相等比较操作。其语法如下: ```sql SELECT CASE column_name WHEN value1 THEN result1 WHEN value2 THEN result2 ELSE default_result END AS new_column_name FROM table_name; ``` 示例: ```sql SELECT case 100 WHEN 50 THEN 'tom' WHEN 100 THEN 'mary' ELSE 'tim' END AS name FROM lxw_dual; -- 输出结果为 'mary' ``` - **复杂逻辑判断** 当需要执行更复杂的布尔表达式时,可以使用此形式。其语法如下: ```sql SELECT CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ELSE default_result END AS new_column_name FROM table_name; ``` 示例: ```sql SELECT CASE WHEN tb1.os = 'android' THEN 'Android Device' WHEN tb1.os = 'ios' THEN 'iOS Device' ELSE 'Other Devices' END AS device_type FROM table_name tb1; ``` 以上两种方法均支持嵌套使用[^3],可以根据实际需求灵活调整逻辑层次。 --- #### 2. **性能考量** 虽然 `CASE WHEN` 是一种非常强大的工具用于数据转换和分类,但在大规模数据集上的频繁调用可能会带来一定的性能开销。如果发现查询效率下降,可以通过以下方式进行优化: - 将特殊值隔离出来单独处理,从而减少主查询的压力[^2]。 - 使用子查询或者临时表预先过滤掉不必要的记录后再应用 `CASE WHEN` 条件。 - 如果可能的话,考虑利用 Hive 提供的内置函数替代部分自定义逻辑以提高运行效率。 --- #### 3. **注意事项** 需要注意的是,在编写涉及多个分支的 `CASE WHEN` 语句时应确保覆盖所有潜在情况以防返回 NULL 值影响后续分析流程;同时也建议保持各分支之间互斥以免造成歧义或错误的结果解释[^1]。 ```sql -- 正确示例:完全覆盖各种可能性并避免重复定义 SELECT CASE WHEN score >=90 AND score<=100 THEN 'A+' WHEN score >=80 AND score<90 THEN 'B+' ... ELSE 'F-' END AS grade_level FROM student_scores; ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值