SQL
では、すべての論理演算子は、TRUE、FALSE、または
NULL(UNKNOWN)を返します。 MySQL では、これは
1
(TRUE)、0
(FALSE)、NULL
として実装されています。ほとんどの場合、これらの値は異なる
SQL
データベース間で共通していますが、場合によっては、TRUE
に対してゼロ以外の値が返ることもあります。
NOT
, !
論理 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
を返し、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
注意: 4.0.5 より前のバージョンの MySQL
では、NULL
が検出されると、使用可能な
0
値をチェックするプロセスが継続されずに、評価が停止される。そのため、これらのバージョンの場合、SELECT
(NULL AND 0)
では 0
ではなく NULL
が返る。
バージョン 4.0.5
では、引き続き可能な限り最適化を図る一方で、常に
SQL標準で規定されたとおりの結果になるようコードが再設計されている。
OR
, ||
論理和。
いずれかのオペランドが非ゼロの場合は
1
を返し、いずれかのオペランドが
NULL
の場合は
NULL
を返します。それ以外の場合は
0
を返す。
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)
と等価。
XOR
はバージョン 4.0.2
で追加された。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.