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) に等価です。
