案例在SQL SELECT查询

问题描述 投票:-1回答:3

下面是我用一个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”。

我试过几个不同的组合,但不知何故,它不执行。

sql sql-server case-statement
3个回答
1
投票

使用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工作。

还要注意:

  • 我定表的别名是很有意义的(如表缩写),而不是任意的字母。
  • 我改变了列别名所以返回的两列是不同的。
  • 我删除绕柱别名单引号。仅使用字符串和日期常量单引号。

0
投票

从别名删除单引号和使用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

0
投票

CASE [value] WHEN NULL THEN END将永远不会计算为true。你将不得不使用CASE WHEN [value] IS NULL THEN 1 END

对于你所拥有的,虽然,我会用:

ISNULL(NULLIF(AssociationClubNumber,'')'NA')
© www.soinside.com 2019 - 2024. All rights reserved.