检查 MS Access SQL 语句中的空值
Posted
技术标签:
【中文标题】检查 MS Access SQL 语句中的空值【英文标题】:check for null value in MS Access SQL statement 【发布时间】:2013-10-15 20:41:44 【问题描述】:以下查询未在我的 ms access 2010 数据库中返回 CurrentVisitor
的值:
SELECT h.ClientNumber, IIf(h.CheckoutDate=null,"Yes","") AS CurrentVisitor
FROM VisitsTable AS h
INNER JOIN (
SELECT ClientNumber, MAX(LastVisitDate) AS LastVisitStart
FROM VisitsTable
GROUP BY ClientNumber)
AS t
ON (h.LastVisitStart = t.LastVisitStart) AND (h.ClientNumber = t.ClientNumber);
我认为原因是If()
操作中对null的检查没有正确写入。谁能告诉我如何解决这个问题?
【问题讨论】:
【参考方案1】:使用
Is Null
而不是
= Null
【讨论】:
+1。并感谢答案。感谢您快速正确的回复。IIf(IsNull(...), ..., ...)
本来是更传统的做法,但如果 Is Null
有效,那我该挑剔谁?
@GordThompson - 你为什么说“更传统”?除非事情发生了变化,否则“Something Is Null”是纯 SQL,“IsNull(Something)”(在 JET 上下文中)VBA,如果可以的话,最好使用纯 SQL。
IIf()
已经相当特定于 Access SQL 和 VB*(与 T-SQL 中的 CASE ... WHEN ...
相比)所以 IsNull()
是像我这样的老手会倾向于编写它。但就像我说的,“如果它有效......”(我已经赞成你的答案)。
@GordThompson - 当然,我们正在处理 Access SQL,但这仍然不会影响我对 Is Null 而非 IsNull 的偏好(这就是我将“在 JET 上下文中”放入的原因)。此外,Access SQL IIf 与 Access VBA IIf 不同,我希望您知道(SQL 一短路,VBA 一短路 - 相当烦人 - 没有)。以上是关于检查 MS Access SQL 语句中的空值的主要内容,如果未能解决你的问题,请参考以下文章