MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む

このページは機械翻訳したものです。

12.4.2 比較関数と演算子

表 12.4 「比較演算子」

名前 説明
> 右不等 (より多い) 演算子
>= 以上 (より多いか等しい) 演算子
< 左不等 (より少ない) 演算子
<>, != 不等価 (等しくない) 演算子
<= 以下 (より少ないか等しい) 演算子
<= NULL 安全等価演算子
= 等価 (等しい) 演算子
BETWEEN ... AND ... 値が値の範囲内にあるかどうか
COALESCE() NULL 以外の最初の引数を返します
GREATEST() 最大の引数を返します
IN() 値が値セット内にあるかどうか
INTERVAL() 第 1 引数より小さい引数のインデックスを返します
IS ブーリアンに対して値をテストします
IS NOT ブーリアンに対して値をテストします
IS NOT NULL NOT NULL 値テスト
IS NULL NULL 値テスト
ISNULL() 引数が NULL かどうかをテストします
LEAST() 最小の引数を返します
LIKE 単純なパターン一致
NOT BETWEEN ... AND ... 値が値の範囲内にないかどうか
NOT IN() 値が値セット内にないかどうか
NOT LIKE 単純なパターン一致の否定
STRCMP() 2 つの文字列を比較します

比較演算の結果は、1 (TRUE)、0 (FALSE)、または NULL の値になります。 これらの演算は、数字と文字列の両方で機能します。 必要に応じて、文字列は数字に、数字は文字列に自動的に変換されます。

次の関係比較演算子を使用すれば、スカラーオペランドだけでなく行オペランドも比較できます。

=  >  <  >=  <=  <>  !=

これらの演算子の詳細は、このセクションの後半で説明します。 行サブクエリーのコンテキストにおける行比較のその他の例は、セクション13.2.11.5「行サブクエリー」 を参照してください。

このセクションで示す関数の一部では、1 (TRUE)、0 (FALSE)、または NULL 以外の値が返されます。 LEAST() および GREATEST() はこのような関数の例です。セクション12.3「式評価での型変換」 では、これらの関数と同様の関数によって実行される、戻り値を決定するための比較操作のルールについて説明しています。

注記

以前のバージョンの MySQL では、LEAST() または GREATEST() を含む式を評価するときに、サーバーは関数が使用されたコンテキストを推測し、関数の引数を式全体のデータ型に強制変換しようとしました。 たとえば、LEAST("11", "45", "2") の引数は文字列として評価およびソートされるため、この式は"11"を返します。 MySQL 8.0.3 以前では、式 LEAST("11", "45", "2") + 0 を評価する際に、サーバーは引数をソートする前に整数に変換し (結果に整数 0 を追加することが予想されます)、2 を返します。

MySQL 8.0.4 以降、サーバーはこの方法でコンテキストの推測を試行しなくなりました。 かわりに、関数は指定された引数を使用して実行され、すべて同じ型でない場合にのみ、1 つ以上の引数へのデータ型変換が実行されます。 戻り値を使用する式によって強制される型強制は、関数の実行後に実行されるようになりました。 つまり、MySQl 8.0.4 以降では、LEAST("11", "45", "2") + 0"11" + 0 と評価されるため、整数 11 になります。 (Bug #83895、Bug #25123839)

CAST() 関数を使用すると、比較目的で値を特定の型に変換できます。 CONVERT() を使用すると、文字列値を別の文字セットに変換できます。 セクション12.11「キャスト関数と演算子」を参照してください。

デフォルトでは、文字列比較では大/小文字は区別されず、現在の文字セットが使用されます。 デフォルトは utf8mb4 です。