Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


12.3.3 論理演算子

表 12.4 論理演算子

名前 説明
AND, && 論理 AND
NOT, ! 値を否定します
||, OR 論理 OR
XOR 論理 XOR

SQL では、すべての論理演算子は TRUEFALSE、または 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 が生成されています。

  • AND&&

    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
  • OR||

    論理 OR。両方のオペランドが非 NULL であれば、オペランドのいずれかがゼロ以外である場合の結果は 1、それ以外の場合は 0 になります。NULL オペランドが 1 つあれば、ほかのオペランドがゼロ以外である場合の結果は 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

    論理 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) に等しくなります。