Select 中的案例 sql 中的查询

Case in Select query in sql

下面是我的 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 应该 return 字符串 "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.

另请注意:

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

从别名中删除单引号并使用 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 永远不会计算为真。您将不得不使用 CASE WHEN [value] IS NULL THEN 1 END.

尽管如此,我会使用:

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