Case when then esle end

时间:2023-03-10 07:25:45
Case when then esle end

Case具有两种格式。简单Case函数和Case搜索函数。
--简单Case函数

CASE sex
WHEN '' THEN '男'
WHEN '' THEN '女'
ELSE '其他' END

--Case搜索函数

CASE WHEN sex = '' THEN '男'
WHEN sex = '' THEN '女'
ELSE '其他' END

这两种方式,可以实现相同的功能。

简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。
还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。
两者中可以根据不同的需求来选择。

CASE WHEN LEN(OHA.Code) > 0 THEN OHA.Code + '-' ELSE '' END + OHA.Name AS [Text]
  • OHA.Code的长度大于0时,Text字段的值为OHA.Code + '-' + OHA.Name
  • OHA.Code的长度=0时,Text字段的值为OHA.Name

col1  col2

1       aaa

2       bbb

3       ccc

select case when col1 = 1 then '北京' when col1 = 2 then '上海' else '广州' end col1, col2 from tabA

如果col1为1,则显示为北京,col1为2,则显示为上海

从stud_grade表中查询所有同学考试成绩情况,凡成绩为空者输出“未考”、小于60分输出“不及格”、60分至70分输出“及格”、70分至90分输出“良好”、大于或等于90分时输出“优秀”。
SELECT stud_id,name,score=CASE WHEN grade IS NULL THEN ’未考’
WHEN grade<60 THEN ’不及格’
WHEN grade>=60 AND grade<70 THEN ’及格’
WHEN grade>=70 AND grade<90 THEN ’良好’
WHEN grade>=90 THEN ’优秀’
END
FROM stud_grade

总结:相对于对表中的值进行字典翻译功能