このページは機械翻訳したものです。
SQL では、すべての論理演算子は TRUE、FALSE、または NULL (UNKNOWN) に評価されます。 MySQL では、これらは 1 (TRUE)、0 (FALSE)、および NULL として実装されます。 この大部分は、さまざまな SQL データベースサーバーに共通のものです。ただし、一部のサーバーは TRUE にゼロ以外の任意の値を返す場合があります。
MySQL では、ゼロ以外の任意の非 NULL 値が TRUE に評価されます。 たとえば、次のステートメントはすべて TRUE に評価されます。
mysql> SELECT 10 IS TRUE;
-> 1
mysql> SELECT -10 IS TRUE;
-> 1
mysql> SELECT 'string' IS NOT NULL;
-> 1
-
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が生成されています。!、演算子は非標準の MySQL 拡張機能です。 MySQL 8.0.17 では、この演算子は非推奨です。将来のバージョンの MySQL で削除される予定です。 アプリケーションは、標準の SQLNOT演算子を使用するように調整する必要があります。 -
AND,&&論理 AND すべてのオペランドがゼロ以外で非
NULLの場合は1に、1 つ以上のオペランドが0の場合は0に評価され、それ以外の場合はNULLが返されます。mysql> SELECT 1 AND 1; -> 1 mysql> SELECT 1 AND 0; -> 0 mysql> SELECT 1 AND NULL; -> NULL mysql> SELECT 0 AND NULL; -> 0 mysql> SELECT NULL AND 0; -> 0&&、演算子は非標準の MySQL 拡張機能です。 MySQL 8.0.17 では、この演算子は非推奨です。将来のバージョンの MySQL ではサポートされなくなる予定です。 アプリケーションは、標準の SQLAND演算子を使用するように調整する必要があります。 -
OR,||論理 OR。 両方のオペランドが非
NULLであれば、オペランドのいずれかがゼロ以外である場合の結果は1、それ以外の場合は0になります。NULLオペランドが 1 つあれば、ほかのオペランドがゼロ以外である場合の結果は1、それ以外の場合はNULLになります。 両方のオペランドがNULLであれば、結果はNULLになります。mysql> SELECT 1 OR 1; -> 1 mysql> SELECT 1 OR 0; -> 1 mysql> SELECT 0 OR 0; -> 0 mysql> SELECT 0 OR NULL; -> NULL mysql> SELECT 1 OR NULL; -> 1注記PIPES_AS_CONCATSQL モードが有効な場合、||は SQL 標準の文字列連結演算子 (CONCAT()など) を示します。||、演算子は非標準の MySQL 拡張機能です。 MySQL 8.0.17 では、この演算子は非推奨です。将来のバージョンの MySQL ではサポートされなくなる予定です。 アプリケーションは、標準の SQLOR演算子を使用するように調整する必要があります。 例外:PIPES_AS_CONCATが有効な場合、||は文字列の連結を示すため、非推奨は適用されません。 -
XOR論理 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; -> 1a XOR bは、数学的に(a AND (NOT b)) OR ((NOT a) and b)に等しくなります。