在where语句中使用null无效;没有空值

时间:2017-06-28 13:39:08

标签: sql ms-access ms-access-2010

我有以下问题:

我使用两个查询来解析导入的数据,他们都在选择数据 导入的数据集非常复杂,但这会重现错误。

QueryA:

SELECT CDbl(FieldA) As DblA, Imported.* From Imported WHERE FieldA IS NOT NULL

QueryB:

SELECT * FROM QueryA WHERE DblA > 7 AND DblA < 600

QueryA运行正常,QueryB抛出无效使用空错误

如果我将QueryA的结果插入到表中并对其运行QueryB,但我没有收到错误,但是,这不是必需的。

如果我从QueryB中删除WHERE,它运行正常。

这有不同的解决方法吗?或者我应该接受冗余表?

2 个答案:

答案 0 :(得分:0)

尝试此查询。

SELECT * FROM QueryA WHERE DblA > 7 AND DblA < 600 AND Dbla IS NOT NULL

答案 1 :(得分:0)

啊,修好了,还不知道为什么。

更改了QueryA

SELECT CDbl(Nz(FieldA, 999)) As DblA, Imported.* From Imported WHERE FieldA IS NOT NULL AND Nz(FieldA, 999) <> 999

就我的SQL知识而言,这应该没有任何区别,但确实如此。如果有人可以解释,我会欢迎它。

999而不是0是因为我会在其他函数中得到除0错误(而实际上Access不应该运行任何函数,因为它被过滤掉了)。