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 つの式の真偽値である文字列が含まれます。これらの真理値は、True (-1) または False (0) のいずれかです。ただし、連結の結果は文字列でなければならないため、数値の真理値は結合される前にまず文字列としてキャストされます。
WHERE
次に、句を調べます。WHERE
db エンジンは、句が として評価されるすべての行を提供しますTrue
。実際には、-1 だけでなく、ゼロ以外の非 Null 値が の代わりになりTrue
ます。列からわかるようconcat_result
に、これらの行はどれも句False
によってゼロ ( )として評価されないWHERE
ため、テーブル内のすべての行がクエリ結果セットに含まれます。
WHERE
を代入AND
するように句を変更する&
と、クエリは と の両方が Null である行 (id=3) のみを返しWeinerDog
ます。 field1
field2
WHERE
(WeinerDog.field1 Is Null) AND (WeinerDog.field2 Is Null);