千家信息网

SQL中 CASE WHEN 使用

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,一、NULL 值判断1.判断空值,不成功select case 字段名 when null then '空值' else '非空值' END as
千家信息网最后更新 2025年01月20日SQL中 CASE WHEN 使用

一、NULL 值判断

1.判断空值,不成功

select case 字段名        when null   then '空值'         else '非空值'         END  as 字段别名 from   表  

2.判断空值,成功

select case          when 字段名 IS NULL   then '空值'          when 字段名 ='OK'    then 'OK值'        else '非空值'          END  字段别名from   表  

二、把 If 语句改为 Case when

先看看使用 if 语句的写法:

    declare @SelDD smalldatetime,@SelHH tinyint    set @SelDD=cast(convert(varchar(19),Getdate(),111) as smalldatetime)    set @SelHH=datepart(hour,Getdate())          if @SelHH=0    begin        select H0 from 表     end else    if @SelHH=1    begin        select H1 from 表     end    if @SelHH=2     begin        select H2 from 表     end    if @SelHH=3    begin        select H3 from 表     end    if @SelHH=4    begin        select H4 from 表     end    if @SelHH=5    begin        select H5 from 表     end    if @SelHH=6    begin        select H6 from 表     end    if @SelHH=7    begin        select H7 from 表     end    if @SelHH=8    begin        select H8 from 表     end    if @SelHH=9    begin        select H9 from 表     end    if @SelHH=10    begin        select H10 from 表     end    if @SelHH=11    begin        select H11 from 表     end    if @SelHH=12    begin        select H12 from 表     end    if @SelHH=13    begin        select H13 from 表     end    if @SelHH=14    begin        select H14 from 表     end    if @SelHH=15     begin        select H15 from 表     end    if @SelHH=16    begin        select H16 from 表     end    if @SelHH=17     begin        select H17 from 表     end    if @SelHH=18    begin        select H18 from 表     end    if @SelHH=19    begin        select H19 from 表     end    if @SelHH=20    begin        select H20 from 表     end    if @SelHH=21    begin        select H21 from 表     end    if @SelHH=22    begin        select H22 from 表     end    if @SelHH=23    begin        select H23 from 表     end

再把上面的语句改为case when end:

select case @SelHH                     when 0  then H0                    when 1  then H1                    when 2  then H2                    when 3  then H3                    when 4  then H4                    when 5  then H5                    when 6  then H6                    when 7  then H7                    when 8  then H8                    when 9  then H9                    when 10 then H10                    when 11 then H11                    when 12 then H12                    when 13 then H13                    when 14 then H14                    when 15 then H15                    when 16 then H16                    when 17 then H17                    when 18 then H18                    when 19 then H19                    when 20 then H20                    when 21 then H21                    when 22 then H22                    when 23 then H23                end            from 数据表
0