AND
是一个逻辑运算符。 &
是一个连接运算符。查看运算符表以获取有关 Access 2007 中可用的各种运算符的更多详细信息。
要查看操作上的差异,请从 table 开始WeinerDog
。
id field1 field2
1 a
2 y
3
field1
和列中的空白field2
表示 Null 值。
接下来运行此查询:
SELECT
WeinerDog.id,
WeinerDog.field1,
WeinerDog.field2,
(WeinerDog.field1 Is Null)
& (WeinerDog.field2 Is Null) AS concat_result
FROM WeinerDog
WHERE
(WeinerDog.field1 Is Null) & (WeinerDog.field2 Is Null);
该查询应该给你这个结果集:
id field1 field2 concat_result
1 a 0-1
2 y -10
3 -1-1
检查concat_result
列。它包含的字符串是连接在一起的 2 个表达式的真值。这些真值是真 (-1) 或假 (0)。但是,由于连接的结果必须是字符串,因此在将它们连接在一起之前,首先将数值真值转换为字符串。
然后检查WHERE
子句。db 引擎将为您提供WHERE
子句评估为的所有行True
。实际上,不只是 -1,除零以外的任何非 Null 值都可以代表True
. 正如您从该concat_result
列中看到的那样,这些行都不会被子句评估为零 ( False
) WHERE
... 因此表中的所有行都将包含在查询结果集中。
If you change the WHERE
clause to substitute AND
for &
, the query will return only the WeinerDog
row (id=3) which has Null for both field1
and field2
.
WHERE
(WeinerDog.field1 Is Null) AND (WeinerDog.field2 Is Null);