首页 > 解决方案 > sql中Select查询中的案例

问题描述

下面是我的带有 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”。

我尝试了几种不同的组合,但不知何故它没有执行。

标签: sqlsql-servercase-statement

解决方案


使用其他形式的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.

另请注意:

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

推荐阅读