下面是我的带有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.AssociationClubNumber
是NULL
或""
,则CASE
应该返回字符串 “NA”。
我尝试了几种不同的组合,但是以某种方式无法执行。
答案 0 :(得分: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
不兼容。
也请注意:
答案 1 :(得分: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
答案 2 :(得分:0)
CASE [value] WHEN NULL THEN END
永远不会评估为true。您将必须使用CASE WHEN [value] IS NULL THEN 1 END
。
尽管如此,我会使用:
ISNULL(NULLIF(AssociationClubNumber,'')'NA')