繁体   English   中英

SQL中的Select查询中的情况

[英]Case in Select query in sql

以下是我的带有case语句的SQL。

select 
    a.AssociationClubNumber,
    case a.AssociationClubNumber
        when NULL then 'NA'
        when '' then 'NA'
        else a.AssociationClubNumber
    end as 'AssociationClubNumber'
from 
    [dbo].[Customer] a

如果a.AssociationClubNumberNULL"" ,则CASE应返回字符串“ NA”。

我尝试了几种不同的组合,但是以某种方式无法执行。

使用其他形式的case -进行显式比较:

select c.AssociationClubNumber,
       (case when c.AssociationClubNumber is null or 
                  c.AssociationClubNumber = ''
             then 'NA'
             else c.AssociationClubNumber
        end)  as new_AssociationClubNumber
from [dbo].[Customer] c;

您正在使用简单的case 即使采用简单形式, NULL也永远不会匹配-基本上是因为=不适用于NULL

另请注意:

  • 我修复了表别名,使它有意义(作为表的缩写),而不是任意字母。
  • 我更改了列别名,以便返回的两列不同。
  • 我删除了列别名周围的单引号。 仅对字符串和日期常量使用单引号。

从别名中删除单引号,并且使用is null

 select a.AssociationClubNumber,
    Case a.AssociationClubNumber
    When is NULL THEN  'NA'  
    WHEN  '' then  'NA'
    ELSE a.AssociationClubNumber
    END  as AssociationClubNumber_val
    from [dbo].[Customer] a

CASE [value] WHEN NULL THEN END将永远不会评估为true。 CASE WHEN [value] IS NULL THEN 1 END您将不得不使用CASE WHEN [value] IS NULL THEN 1 END

对于您所拥有的,我将使用:

ISNULL(NULLIF(AssociationClubNumber,'')'NA')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM