SQL では、すべての論理演算子は
TRUE
、FALSE
、または
NULL
に評価されます (
UNKNOWN
) 。MySQL では、これらは 1 (
TRUE
) 、0 ( FALSE
)
、そして NULL
として実行されます。サーバのあるものは
TRUE
にゼロ以外のすべての値を戻す場合があるものの、このほとんどは各種の
SQL データベース
サーバにとって通常のことです。
NOT 演算。オペランドが 0
の場合は 1
に、オペランドがゼロ以外の場合は
0
に評価し、そして NOT
NULL
は NULL
を戻します。
mysql>SELECT NOT 10;
-> 0 mysql>SELECT NOT 0;
-> 1 mysql>SELECT NOT NULL;
-> NULL mysql>SELECT ! (1+1);
-> 0 mysql>SELECT ! 1+1;
-> 1
最後の例は、式の評価を (!1)+1
と同様に行うため、1
を生成します。
AND 演算。すべてオペランドがゼロ以外で非
NULL
の場合は 1
に、ひとつ以上のオペランドが
0
の場合は 0
に評価し、それ以外は NULL
を戻します。
mysql>SELECT 1 && 1;
-> 1 mysql>SELECT 1 && 0;
-> 0 mysql>SELECT 1 && NULL;
-> NULL mysql>SELECT 0 && NULL;
-> 0 mysql>SELECT NULL && 0;
-> 0
OR 演算。両方のオペランドが非
NULL
である時、オペランドのどれかがゼロ以外である場合は結果は
1
、その他は 0
になります。ひとつが NULL
オペランドであれば、他のオペランドがゼロ以外である場合の結果は
1
、その他は NULL
になります。両方のオペランドが
NULL
であれば、結果は
NULL
になります。
mysql>SELECT 1 || 1;
-> 1 mysql>SELECT 1 || 0;
-> 1 mysql>SELECT 0 || 0;
-> 0 mysql>SELECT 0 || NULL;
-> NULL mysql>SELECT 1 || NULL;
-> 1
XOR 演算。オペランドのどちらかが
NULL
である場合は
NULL
を戻します。非
NULL
のオペランドの場合は、ゼロ以外のオペランドの数が奇数であれば
1
に評価し、それ以外は
0
を戻します。
mysql>SELECT 1 XOR 1;
-> 0 mysql>SELECT 1 XOR 0;
-> 1 mysql>SELECT 1 XOR NULL;
-> NULL mysql>SELECT 1 XOR 1 XOR 1;
-> 1
a XOR b
は、数学的に (a
AND (NOT b)) OR ((NOT a) and b)
に等価です。