标签归档:case when end用法举例

mssql sqlserver 使用case when then对查询条件进行判断的方法分享


摘要:
下文讲述sqlserver检索数据时,使用case when then对查询条件进行判断的方法,如下所示:
实验环境:sql server 2008 R2

在平常我们使用case when then 对数据进行展示区别,如下所示:

 ---方法1:
   case  
      when  条件1 then 结果1
      when  条件2 then 结果2
      else    其它
   end
 ---方法2:
   case 字段 
       when '值1'  then '结果1' 
       when '值2'  then '结果2' 
        else 其它
   end  
 

例:

     select id, 
      case 
        when info ='a' then 'b' 
        else '其它' 
      end as info 
     from tableName 
  


当我们需要使用case when end 作为where检索的条件值时,我们可以通过将条件放入when中,case的返回值和where条件中的做对比,如下所示:

     select id, 
      case 
        when info ='a' then 'b' 
        else '其它' 
      end as info 
     from tableName   
    where 
      (
        case 
        when  info like '%test%' then 1   
        else 0 
       end 
      )=1

mssql sqlserver case 关键字应用说明简介


摘要:
下文讲述sqlserver中case关键字的用法,如下所示:
实验环境:sql server 2008 R2



case 关键字用法简介:

  --用法1: 字段判断
   select    
       CASE [列名]
            WHEN 'a' THEN '类别A'
            WHEN 'b' THEN '类别B'
            ELSE '其它' 
        END
            as [类别分类] 
     from [表名]
 ----------------------------------------
  --用法2:when 条件中指定任意字段判断
    select    
       CASE 
            WHEN [列名]= 'a' THEN '类别A'
            WHEN [列名]='b' THEN '类别B'
            ELSE '其它' 
        END
            as [类别分类] 
     from [表名]


case 匹配注意事项:
当case 匹配第一个匹配结果符合时,此时case 函数将会终止执行;
case 用法2比用法1更加灵活,用法2可以同时对多个字段进行判断,相比case写法1具有更强的灵活性。



case 关键字用途:

1.字段替换显示
在一些特殊的场景,数据库存储的为1 或 0 表示开关,当我们呈现数据给用户时,我们可以采用case 对行数据进行相关操作,如下所示:

    select    
       CASE 
            WHEN [列名]= '1' THEN '开'
            WHEN [列名]='0' THEN '关'
            ELSE '未知' 
        END
            as [标志] 
     from [表名]

2.分类数据统计
例:
统计一张销量表中,
销量大于等于100 的销售员个数
销量小于100的销售员个数

   select  销售员,
     sum(
      case 
      when  [销量] >=100 then 1 
      else 0 
       end 
     ) as [销量大于等于100],
    sum(
      case 
      when  [销量] <100 then 1 
      else 0 
       end 
     ) as [销量小于100]
   from  [tablename]
    group by 销售员
   

mssql sqlserver 使用”case when then end” 判断字段是否为null的方法及注意事项分享


摘要:
下文通过举例的方式分享”case when then end”判断一个字段是否为null的方法分享,如下所示:
实验环境:sql server 2008 R2



---错误写法------------
  select  
       case  [列名]
          when  null then 'null值'
           else [非空值]
       end as   [null值判断] 
  from  tableName 
go
---正确写法------------
  select  
       case  
          when [列名] is null then 'null值'
           else [非空值]
       end as   [null值判断] 
  from  tableName 


注意事项:
由于null值的特殊性,我们不能通过值的比对来判断是否为null,只能通过 is null来确定值是否为null。