sql - 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.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
.
另请注意:
- 我修复了表格别名,使其有意义(作为表格缩写)而不是任意字母。
- 我更改了列别名,因此返回的两列不同。
- 我删除了列别名周围的单引号。仅对字符串和日期常量使用单引号。
推荐阅读
- shell - “ls -l” cmd shell 中的总数和第一个数字是多少?
- android - 片段和活动之间的通信(非静态方法)
- amazon-web-services - aws route53 get-health-check --health-check-id 不返回关联的 cloudwatch 警报详细信息
- python - 多个用户同时点击django web app的按钮
- kubernetes - 在 GKE 入口云负载均衡器上强制 http 到 https
- swift - 访问 firebase 数据库返回 nil swift
- git - 在尝试 git reset --soft 并撤消它时,提交和 HEAD 在幕后发生了什么?
- c# - 捕获异常并尽早抛出它有什么好处?
- c# - Task.WhenAll 继续,即使 HttpClient 中存在异常
- qt - 不处于编辑模式时如何在QTableView中显示QSpinBox