NULLIF()函数 
  主流数据库都支持NULLIF()函数,这个函数的参数格式如下: 
NULLIF ( expression1 , expression2 ) 
如果两个表达式不等价,则  NULLIF 返回第一个  expression1的值。如果两个表达式等
价,则  NULLIF 返回第一个  expression1类型的空值。也就是返回类型与第一个  expression 

相同。 
 下面的SQL演示了NULLIF()函数的用法: 
 SELECT FBirthDay,FRegDay,  
 NULLIF(FBirthDay,FRegDay) 
 FROM T_Person 
   执行完毕我们就能在输出结果中看到下面的执行结果: 
 FBirthDay  FRegDay   1981-03-22 00:00:00.0  1998-05-01 00:00:00.0  1981-03-22 00:00:00.0 
 1987-01-18 00:00:00.0  1999-08-21 00:00:00.0  1987-01-18 00:00:00.0 
 1987-11-08 00:00:00.0  2001-09-18 00:00:00.0  1987-11-08 00:00:00.0 
 1982-07-12 00:00:00.0  2000-03-01 00:00:00.0  1982-07-12 00:00:00.0 
 1983-02-16 00:00:00.0  1998-05-01 00:00:00.0  1983-02-16 00:00:00.0 
 <NULL>  1999-03-01 00:00:00.0  <NULL> 
 <NULL>  <NULL>  <NULL> 
 1972-07-18 00:00:00.0  1995-06-19 00:00:00.0  1972-07-18 00:00:00.0 
 CASE函数 
   COALESCE()函数只能用来进行空值的逻辑判断处理,如果要实现“如果年龄大于25
 则返回姓名,否则返回别名”这样的逻辑判断就比较麻烦了。在主流数据库系统中提供了
 CASE函数的支持,严格意义上来讲CASE函数已经是流程控制语句了,不是简单意义上的
 函数,不过为了方便,很多人都将CASE称作“流程控制函数”。 
   CASE函数有两种用法,下面分别介绍。 
 用法一 
   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。 
   可见CASE函数和普通编程语言中的SWITCH……CASE语句非常类似。使用CASE函数
 我们可以实现非常复杂的业务逻辑。下面的SQL用于判断谁是“好孩子”,我们比较偏爱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 
 用法二 
   上边一节中介绍的CASE语句的用法只能用来实现简单的“等于”逻辑的判断,要实现
 “如果年龄小于18则返回‘未成年人’,否则返回‘成年人’”是无法完成的。值得庆幸的是,
 CASE函数还提供了第二种用法,其语法如下: 
 CASE 
 WHEN condition1 THEN returnvalue1 
 WHEN condition 2 THEN returnvalue2 
 WHEN condition 3 THEN returnvalue3 
 …… 
 ELSE defaultreturnvalue 
 END 
   其中的condition1 、condition 2、condition 3……为条件表达式,CASE函数对各个表达
 式从前向后进行测试,如果条件condition1为真则返回returnvalue1,否则如果条件condition2
 为真则返回returnvalue2,否则如果条件condition3为真则返回returnvalue3,……以此类推,
 如果不符合所有的WHEN条件,则返回默认值defaultreturnvalue。 
   这种用法中没有限制只能对一个表达式进行判断,因此使用起来更加灵活。比如下面的
 SQL语句用来判断一个人的体重是否正常,如果体重小于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