我有一个查询,我想排除某个字段具有特定文本值的结果。但是,我不想排除空白或其他值。
这就是我所做的: 场A 标准:不是“健康寿命”
当我运行此查询时,它成功排除了 Healthspan,但也排除了所有空白字段。有什么解决办法吗?
您的查询仅返回条件
[Field A] <> "Healthspan"
为 True 的行。但是,当 [Field A]
为 Null 时,条件将被评估为 Null,而不是 True,因此该行被排除。
+--------------+-----------------+
| Field A | <> "Healthspan" |
+--------------+-----------------+
| "Healthspan" | False |
+--------------+-----------------+
| "foo" | True |
+--------------+-----------------+
| Null | Null |
+--------------+-----------------+
使用
OR
添加第二个条件以包含具有 Null [Field A]
值的行:
SELECT y.*
FROM YourTable AS y
WHERE
y.[Field A] <> "Healthspan"
OR y.[Field A] Is Null;
您需要使用 IsNull() 函数。
Not "Healthspan" OR IsNull([tblTableName].[Field A])=True
您会发现 IsNull() 函数非常方便。
顺便说一句,这已经是 8 年后的事了,这种情况仍在继续,没有太大变化,对我来说,逻辑运算的结果应该是 true 或 false,将 NULL 作为第三种可能的结果是荒谬的,微软应该改变这一点.