下面是我用一个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”。
我试过几个不同的组合,但不知何故,它不执行。
使用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
。
对于你所拥有的,虽然,我会用:
ISNULL(NULLIF(AssociationClubNumber,'')'NA')