【发布时间】:2017-10-04 00:34:22
【问题描述】:
我有一个看起来很简单的问题,但由于某种原因,我无法从打击选择中删除我的空值。我需要做的就是返回一行,即没有 NULL 值的那一行。有人可以指出我的错误吗? :)
我运行时得到的结果:
EffectiveDate Refund
2015-05-18 00:00:00.000 NULL
2015-05-18 00:00:00.000 1
我的期望:
EffectiveDate Refund
2015-05-18 00:00:00.000 1
我的查询:
select md.EffectiveDate,
CASE
WHEN
ISNULL(ConfigID,'') = 3 THEN '1'
WHEN
ISNULL(ConfigID,'') = 4 THEN '2'
END AS Refund
from dbo.PartnerBankConfig md
where md.PartnerID= 100000509
and md.EffectiveDate = (select max(EffectiveDate)
from dbo.PartnerBankConfig
where PartnerID = 100000509
and ISNULL(ConfigID,'') IS NOT NULL)
【问题讨论】:
-
好吧,如果您使用 ISNULL 将 Null 转换为空白字符串,那么 IS NOT NULL 将永远不会评估为 True...
-
@JacobH:它永远不会评估为 False
-
将
and ISNULL(ConfigID,'') IS NOT NULL)替换为and ConfigID IS NOT NULL。 -
对...所以它应该只是并且 ConfigID 不是 NULL
-
我标记了这个 sql-server,因为
dbo和isnull()强烈建议这样做。
标签: sql sql-server syntax