标签:
本文非原创
它主要用来简化SQL表达式,在任何允许使用表达式的地方均可使用,
 根据条件的不同返回不同的值。
注意:它不能单独执行,只能作为语句的一部分使用,
      分为简单 case 表达式和搜索 case 表达式。
1.简单 case 表达式:
  它是一个测试表达式与一组简单表达式进行比较,如果和某一个值相等,
   则返回对应表达式的值。
               语法:  case 表达式 / 列名变量
                           when  测试值1  then  结果表达式1
                           when  测试值2  then  结果表达式2
                              ……
                           else  结果表达式
                       end 
 例:(1)select 姓名=case book_name
         when ‘++c‘   then ‘c语言‘
         when ‘hello‘ then ‘hahaha‘
         when ‘hello1‘ then ‘sdf‘
         when ‘hello2‘ then ‘haasdfghaha‘
         else ‘没有值‘
         end from yuesubiao  
    (2)declare @aa varchar(10)
         set @aa=(select egg_name from egg where egg_shu=14)
         select case @aa
         when ‘hhh‘ then ‘1111‘
         when ‘ll‘ then ‘222‘
         else‘aaaaaaaaaaaaaaa‘
         end  
 
2.搜索 case 表达式:
  它是一个测试表达式与一组搜索布尔表达式进行比较,
   如果和某一个值相等,则返回对应表达式的值。 
        语法:  case
                   when  布尔表达式1  then  结果表达式1
                   when  布尔表达式2  then  结果表达式2
                     ……
                   else  结果表达式
                end 
      例: (1) select egg_name,egg_liang,所得税=
                 case
                 when (egg_zhong<=500)  then ‘1111111‘
                 when (egg_zhong<=5000)  then‘222222‘
                 when (egg_zhong<=50000) then‘33333333‘
                 else‘444444‘
                 end 
                 from egg 
   (2) select book_name,www=
         case
         when left(ltrim(book_addr),3)=‘hgf‘ then ‘123‘
         when left(ltrim(book_addr),3)=‘hhh‘ then ‘456‘
         when left(ltrim(book_addr),3)=‘456‘ then ‘789‘
         else‘AAAAAAAA‘
         end 
         from YI
下面博文讲了Case的常见使用情况,很不错。
http://www.cnblogs.com/Ronin/archive/2006/07/20/455388.html#2810859
http://www.cnblogs.com/Ronin/archive/2006/07/20/455756.html
标签:
原文地址:http://www.cnblogs.com/xieyuanzheng/p/5597050.html