SQL – 10.流程函数
空值处理函数
ISNULL(expression,value) :如果expression不为空则返回expression,否则返回value。
1 | SELECT ISNULL (FName, '佚名' ) as 姓名 FROM T_Employee |
Case 函数用法
- (1)单值判断,相当于switch case
CASE expression
WHEN value1 THEN returnvalue1
WHEN value2 THEN returnvalue2
WHEN value3 THEN returnvalue3
ELSE defaultreturnvalue
END
T_Customer表
例子
1 2 3 4 5 6 7 8 9 10 | select Fname, ( case Flevel when 1 then '普通客户' when 2 then '会员' when 3 then 'vip' else '游客' end ) as 客户类型 from T_Customer |
- (2)相当于if…else…else….
CASE
WHEN condition1 THEN returnvalue1
WHEN condition 2 THEN returnvalue2
WHEN condition 3 THEN returnvalue3
ELSE defaultreturnvalue
END
例子:
练习1:
表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。
1 | |
练习2:
单号 金额
Rk1 10
Rk2 20
Rk3 -30
Rk4 -10
将上面的表输出为如下的格式:
单号 收入 支出
Rk1 10 0
Rk2 20 0
Rk3 0 30
Rk4 0 10
练习3:
有一张表T_Scores,记录比赛成绩
Date Name Score
2008-8-8 拜仁 胜
2008-8-9 奇才 胜
2008-8-9 湖人 胜
2008-8-10 拜仁 负
2008-8-8 拜仁 负
2008-8-12 奇才 胜
要求输出下面的格式:
Name 胜 负
拜仁 1 2
湖人 1 0
奇才 2 0
数据和参考答案见备注
注意:在中文字符串前加N,比如N’胜’
答案:
1.
1 2 3 | select ( case when a>b then a else b end ),( case when b>c then b else c end ) from t |
2.
1 | select ID,( case when money <0 then 0 else money end ) AS 收入,( case when money >0 then 0 else abs (money) end ) as 支出 from T_Bill |
3.
1 | select Name , sum ( case when score = '胜' then 1 else 0 end ) as '胜' , |
1 | sum ( case when score = '负' then 1 else 0 end ) as '负' |
1 | from T_bascketball |
1 | group by name |
作者:【唐】三三
出处:https://www.cnblogs.com/tangge/archive/2012/05/07/2489253.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2011-05-07 一名真正的Web程序员应该懂得那些方面的知识,应该注意学习哪些东西
2011-05-07 程序员职业发展:如何作技术型领导