数据库的CASE( )函数
上一篇 /
下一篇 2017-01-02 00:23:11
/ 个人分类:数据库
COALESCE()函数只能用来进行空值的逻辑判断处理,如果要实现“如果年龄大于25则返回姓名,否则返回别名”这样的逻辑判断就比较麻烦了。在主流
数据库系统中提供了CASE函数的支持,严格意义上来讲CASE函数已经是流程控制语句了,不是简单意义上的函数,不过为了方便,很多人都将CASE称作“流程控制函数”。
1、用法一
CASE函数的语法如下:
CASE expression
WHEN value1 THEN returnvalue1
WHEN value2 THEN returnvalue2
WHEN value3 THEN returnvalue3
……
ELSE defaultreturnvalue
END
CASE函数对表达式expression进行
测试,如果expression等于value1则返回returnvalue1,如果expression等于value2则返回returnvalue2,expression等于value3则返回returnvalue3,……以此类推,如果不符合所有的WHEN条件,则返回默认值defaultreturnvalue。
//判断谁是“好孩子”,我们比较偏爱Tom和Lily,所以我们将他们认为是好孩子,而我们比较不喜欢Sam和Kerry,所以认为他们是坏孩子,其他孩子则为普通孩子
SELECT
FName,
(CASE FName
WHEN 'Tom' THEN 'GoodBoy'
WHEN 'Lily' THEN 'GoodGirl'
WHEN 'Sam' THEN 'BadBoy'
WHEN 'Kerry' THEN 'BadGirl'
ELSE 'Normal'
END) as isgood
FROM T_Person
执行完毕我们就能在输出结果中看到下面的执行结果:
FNAME ISGOOD
Tom GoodBoy
Jim Normal
Lily GoodGirl
Kelly Normal
Sam BadBoy
Kerry BadGirl
Smith Normal
BillGates Normal
CASE函数在制作报表的时候非常有用。比如表T_Customer中的FLevel字段是整数类型,它
记录了客户的级别,如果为1则是VIP客户,如果为2则是高级客户,如果为3则是普通客户,在制作报表的时候显然不应该把1、2、3这样的数字显示到报表中,而应该显示相应的文字,这里就可以使用CASE函数进行处理,
SQL语句如下:
SELECT
FName,
(CASE FLevel
WHEN 1 THEN 'VIP客户'
WHEN 2 THEN '高级客户'
WHEN 3 THEN '普通客户'
ELSE '客户类型错误'
END) as FLevelName
FROM T_Customer
2、用法二
上边一节中介绍的CASE语句的用法只能用来实现简单的“等于”逻辑的判断,要实现
“如果年龄小于18则返回‘未成年人’,否则返回‘成年人’”是无法完成的。值得庆幸的是,CASE函数还提供了第二种用法,其语法如下:
CASE
WHEN condion1 THEN return value1
WHEN condion2 THEN return value2
WHEN condion3 THEN return value3
……
ELSE defaultreturnvalue
END
//判断一个人的体重是否正常,如果体重小于40则认为太瘦,而如果体重大于50则认为太胖,介于40和50之间则认为是正常
SELECT
FName,
FWeight,
(CASE
WHEN FWeight<40 THEN 'thin'
WHEN FWeight>50 THEN 'fat'
ELSE 'ok'
END) as isnormal
FROM T_Person
执行完毕我们就能在输出结果中看到下面的执行结果:
FNAME FWEIGHT ISNORMAL
Tom 56.67 fat
Jim 36.17 thin
Lily 40.33 ok
Kelly 46.23 ok
Sam 48.68 ok
Kerry 66.67 fat
Smith 51.28 fat
BillGates 60.32 fat
以上摘自《程序员的SQL金典》
收藏
举报
TAG:
数据库