SQL语句–CASE函数写法的简单举例,及应用
---case函数的基本结构:
case
when...then...
else... ----可以写也可以不写,按实际需求
end
【举个栗子_1】
eg1:
--我想实现的效果:
--当ID为1时,输出结果显示“财务部”、当ID为2时,输出结果显示“研发部”、当ID为3时,输出结果显示“人力资源部”
SELECT DepartmentID,
CASE WHEN DepartmentID=1 THEN '财务部'
WHEN DepartmentID=2 THEN '研发部'
WHEN DepartmentID=3 THEN '人力资源部'
END
FROM Department
为了明显看出效果,加了一列ID,以检验结果的正确性,
下图为执行语句后返回的结果:
【举个栗子_2】
eg2:
---在我的数据库中,这个表里只存在3个部门,
---所以当ID为1时,输出结果显示“财务部”、当ID为2时,输出结果显示“研发部”、
---当ID不是1也不是2时(即ID为3),输出结果显示“人力资源部”
SELECT DepartmentID,
CASE WHEN DepartmentID=1 THEN '财务部'
WHEN DepartmentID=2 THEN '研发部'
ELSE '人力资源部'
END
FROM Department
下图为执行语句后返回的结果:
可看出与【eg1】中的返回结果一致
【举个栗子_3】
当select中有case函数,但需要进行分组时,把select中的那段case函数直接复制到group by 位置即可
eg3:
SELECT DepartmentID,
CASE WHEN DepartmentID=1 THEN '财务部'
WHEN DepartmentID=2 THEN '研发部'
ELSE '人力资源部'
END
FROM Department
GROUP BY DepartmentID,
CASE WHEN DepartmentID=1 THEN '财务部'
WHEN DepartmentID=2 THEN '研发部'
ELSE '人力资源部'
END
下图为执行语句后返回的结果:
【举个栗子_4】
eg4:
SELECT DepartmentID,
CASE WHEN DepartmentID<2 THEN '财务部'
WHEN DepartmentID>2 THEN '人力资源部'
END
FROM Department
返回结果:
当ID<2时,输出结果显示“财务部”、当ID>2时,输出结果显示“人力资源部”、
但没有说明当ID=2时的输出情况 ,所以输出结果显示为NULL