以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  对于SQL SERVER,如何使用IIF函数。  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=4748)

--  作者:狐狸爸爸
--  发布时间:2009/10/26 9:46:00
--  对于SQL SERVER,如何使用IIF函数。

Case When

IIF函数只对内部表和ACCESS格式的外部数据源有效,对于SQL SERVER这样的外部数据源,需要使用Case When语句进行条件判断。
 

语法1


Case 表达式
When 比较值1 Then 返回值1
When 比较值2 Then 返回值2
When 比较值3 Then 返回值3
....
Else 默认返回值
End


当表达式等于比较值1时,则得到返回值1,当表达式等于比较值2时,则得到返回值2,其余类推;当比较结束,没有符合的比较值时,则得到默认返回值。


例如


Select CName As 客户名称,
(Case CLevel
When 1 Then \'VIP客户\'
When 2 Then \'高级客户\' 
When 3 Then \'普通客户\'
Else \'错误等级\'
End) As 客户等级 From {客户}

可以看到Case When语句其实比IIF函数更为清晰,同时也可以看出,Select语句其实可以分多行编写的。


语法2


Case
When 表达式1 Then 返回值1
When 表达式2 Then 返回值2
When 表达式3 Then 返回值3
...
Else 默认返回值
End


当表达式1成立时,则得到返回值1,当表达式2成立时,则得到返回值2,其余类推;没有表达式成立时,则得到默认返回值。


例如:


Select 姓名,
(Case
When 体重 < 40 Then \'偏瘦\'
When 体重 > 50 Then \'偏胖\'  
Else \'适中\'
End) As 体型 From {学生}


--  作者:gdlgh
--  发布时间:2009/10/26 9:52:00
--  

座个沙发先!
晕迟了!

[此贴子已经被作者于2009-10-26 10:07:49编辑过]

--  作者:狐狸爸爸
--  发布时间:2009/10/26 9:54:00
--  
已经加了
--  作者:yangming
--  发布时间:2009/10/26 11:14:00
--  
收到!
--  作者:czy
--  发布时间:2009/10/26 11:32:00
--  
顶了。