比較演算は、1(TRUE)、0(FALSE)、または
          NULL
          の値を返します。このような関数は、数値と文字列の両方に作用します。必要に応じて、文字列は数値に、数値は文字列に、自動的に変換されます(Perl
          と同様)。
        
MySQL では、比較は次の規則に基づいて行われます。
デフォルトでは、文字列の比較は、現在のキャラクタセット(デフォルトでは ISO-8859-1 Latin1。これは英語でも非常によく動作する)を使用して、ケース非依存方式で行われます。
          いずれかの標準演算子(= や
          <> など。LIKE
          は含まない)を使用してケース非依存文字列を比較する場合、後続の空白(スペース、タブ、改行復帰)は無視されます。
        
mysql> SELECT "a" ="A \n";
        -> 1
以下の例は、比較演算での文字列から数値への変換を示したものです。
mysql>SELECT 1 > '6x';-> 0 mysql>SELECT 7 > '6x';-> 1 mysql>SELECT 0 > 'x6';-> 0 mysql>SELECT 0 = 'x6';-> 1
注意: 次のように、文字列型のカラムを数値型と比較する場合、MySQL では、インデックスを使用した値の迅速な検索は実行できません。
SELECT * FROM table_name WHERE string_key=1
          その理由は、値 1
          を返す可能性があるさまざまな文字列("1"、"
          1"、"1a"
          など)があるためです。
        
              =
            
等しい
mysql>SELECT 1 = 0;-> 0 mysql>SELECT '0' = 0;-> 1 mysql>SELECT '0.0' = 0;-> 1 mysql>SELECT '0.01' = 0;-> 0 mysql>SELECT '.01' = 0.01;-> 1
              <> , !=
            
等しくない
mysql>SELECT '.01' <> '0.01';-> 1 mysql>SELECT .01 <> '0.01';-> 0 mysql>SELECT 'zapp' <> 'zappp';-> 1
              <=
            
より小さいか等しい
mysql> SELECT 0.1 <= 2;
        -> 1
              <
            
より小さい
mysql> SELECT 2 < 2;
        -> 0
              >=
            
より大きいか等しい
mysql> SELECT 2 >= 2;
        -> 1
              >
            
より大きい
mysql> SELECT 2 > 2;
        -> 0
              <=>
            
              等しい(NULL 対応)
            
mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
        -> 1 1 0
              IS NULL , IS NOT
              NULL
            
              値が NULL
              であるかないかのテスト
            
mysql>SELECT 1 IS NULL, 0 IS NULL, NULL IS NULL;-> 0 0 1 mysql>SELECT 1 IS NOT NULL, 0 IS NOT NULL, NULL IS NOT NULL;-> 1 1 0
              
              
              他のプログラムに対して適切に動作するように、MySQL
              では、IS NULL
              の使用時において次の追加機能をサポートしている。
            
直前に挿入されたレコードの検索
SELECT * FROM tbl_name WHERE auto_col IS NULL
                    これを無効化するには、SQL_AUTO_IS_NULL=0
                    を設定する。 See
                    項5.5.6. 「SET 構文」。
                  
                    NOT NULL DATE
                    型と DATETIME
                    型のカラムでの、特殊な日付
                    0000-00-00 の検索
                  
SELECT * FROM tbl_name WHERE date_column IS NULL
                    これは、一部の ODBC
                    アプリケーションで必要になる(ODBC
                    では 0000-00-00
                    日付をサポートしていないため)。
                  
              expr BETWEEN min AND max
            
              expr が min
              以上で、max 以下の場合は
              1
              を返す。それ以外の場合は、0
              を返す。すべての引数が同じ型の場合、これは式
              (min <= expr AND expr <= max)
              と同じ。引数の型が異なる場合、前述の規則にもとづいて型変換が実行される。この場合、型変換は
              3
              つすべての引数に適用される。注意:
              4.0.5 より前のバージョンでは、引数は
              expr の型に変換されていた。
            
mysql>SELECT 1 BETWEEN 2 AND 3;-> 0 mysql>SELECT 'b' BETWEEN 'a' AND 'c';-> 1 mysql>SELECT 2 BETWEEN 2 AND '3';-> 1 mysql>SELECT 2 BETWEEN 2 AND 'x-3';-> 0
              expr NOT BETWEEN min AND max
            
              NOT (expr BETWEEN min AND max)
              と同じ。
            
              expr IN (value,...)
            
              expr が IN
              リストのいずれかの値のときは
              1 を返す。それ以外の場合は
              0
              を返す。すべての値が定数なら、値はすべて
              expr
              の型に基づいて評価され、ソートされる。その後、バイナリ検索によってアイテムが検索される。したがって、IN
              の値リストが定数だけで構成されている場合、IN
              は非常に迅速に行われる。expr
              がケース依存の文字列式の場合、文字列の比較はケース依存方式で行われる。
            
mysql>SELECT 2 IN (0,3,5,'wefwf');-> 0 mysql>SELECT 'wefwf' IN (0,3,5,'wefwf');-> 1
              IN
              リストの値の数は、max_allowed_packet
              値のみによって制限される。
            
              4.1 以降(SQL-99
              標準に準拠するため)、IN
              では、左側の式が NULL
              の場合だけでなく、リストに一致するものが見つからず、リスト内の式の
              1 つが NULL の場合にも
              NULL が返る。
            
              MySQL バージョン 4.1 以降では、IN()
              節にサブクエリを組み込むこともできる。
              See 項6.4.2.3. 「ANY、IN、SOME
          とともに使用したサブクエリ」。
            
              expr NOT IN (value,...)
            
              NOT (expr IN (value,...)) と同じ。
            
              ISNULL(expr)
            
              expr が NULL
              の場合は 1
              を返す。それ以外の場合は 0
              を返す。
            
mysql>SELECT ISNULL(1+1);-> 0 mysql>SELECT ISNULL(1/0);-> 1
              注意: = を使用した
              NULL 値の比較は常に false
              になる。
            
              COALESCE(list)
            
              リスト内の最初の非 NULL
              要素を返す。
            
mysql>SELECT COALESCE(NULL,1);-> 1 mysql>SELECT COALESCE(NULL,NULL,NULL);-> NULL
              INTERVAL(N,N1,N2,N3,...)
            
              N < N1
              の場合は 0、N
              < N2 の場合は
              1(以下同様)というように値を返す。N
              が NULL の場合は
              -1
              を返す。引数はすべて整数として扱われる。この関数で
              N1 < N2 <
              N3 < ... <
              Nn
              を正しく動作させるには、引数を整数として扱う必要がある。これはバイナリ検索(非常に迅速)が使用されるからである。
            
mysql>SELECT INTERVAL(23, 1, 15, 17, 30, 44, 200);-> 3 mysql>SELECT INTERVAL(10, 1, 10, 100, 1000);-> 2 mysql>SELECT INTERVAL(22, 23, 30, 44, 200);-> 0
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.

