今回はMySQLでよく使用する比較演算子をいくつかご紹介したいと思います。
CONTENTS
比較演算子とは
比較演算子とは、2つの式や値などを比較する際に使用するものの事で、「<」や「=」などの記号を指します。またMySQLでは「is null」のような記号ではなく、文字列で行うものも存在します。
いくつかの比較演算子
それでは実際にいくつかの比較演算子をご紹介していきたいと思います。
等しいという意味の「=」
MySQL記載例:select * from テーブル名 where カラムA = “あいう”;
「=」は「比較する2つの値が等しい」といった意味になります。そのため、上記のようなSQL文の場合「カラムAは”あいう”という値と等しいもの」という意味になるので、カラムAに”あいう”という値が入っているものが取得されます。
等しくないという意味の「!=」
MySQL記載例:select * from テーブル名 where カラムA != “あいう”;
「!=」は「比較する2つの値が等しくない」といった意味になります。そのため、上記のようなSQL文の場合「カラムAは”あいう”という値と等しくないもの」という意味になるので、カラムAに”あいう”以外の値が入っているものが
取得されます。また、別の記載方法で下記のように「<>」と記載する事もできます。
MySQL記載例:select * from テーブル名 where カラムA <> “あいう”;
より大きいという意味の「>」
MySQL記載例:select * from テーブル名 where カラムB > 5;
「>」は「左の値は右の値より大きい」といった意味になります。そのため、上記のようなSQL文の場合「カラムBは5より大きい」という意味になるのでカラムBに6や7などの5よりも大きな値が入っているものが取得されます。
より小さいという意味の「<」
MySQL記載例:select * from テーブル名 where カラムB < 5;
「<」は「左の値は右の値より小さい」といった意味になります。そのため、上記のようなSQL文の場合「カラムBは5より小さい」という意味になるのでカラムBに4や3などの5よりも小さな値が入っているものが取得されます。
より大きいか等しいという意味の「>=」
MySQL記載例:select * from テーブル名 where カラムB >= 5;
「>=」は「左の値は右の値より大きいか右の値と等しい」といった意味になります。そのため、上記のようなSQL文の場合「カラムBは5より大きいか5と等しい」という意味になるのでカラムBに5や6や7などの5以上の値が入っているものが取得されます。
「>」と似ていますが、「>=」は比較している「5」という値も含めて取得します。
より小さいか等しいという意味の「<=」
MySQL記載例:select * from テーブル名 where カラムB <= 5;
「<=」は「左の値は右の値より小さいか右の値と等しい」といった意味になります。そのため、上記のようなSQL文の場合「カラムBは5より小さいか5と等しい」という意味になるのでカラムBに5や4や3などの5以下の値が入っているものが取得されます。
こちらも「<」と似ていますが、比較している「5」という値も含めて取得します。
NULLという意味の「IS NULL」
MySQL記載例:select * from テーブル名 where カラムC is null;
「IS NULL」は「対象の値はNULLである」といった意味になります。そのため、上記のようなSQL文の場合「カラムCはNULLである」という意味になるのでカラムCに何も入っていないものが取得されます。
また、こちらは上記で紹介した「=」と似ていますが、NULLは以下のように記載しても取得されないため注意が必要です。
NGな記載例:select * from テーブル名 where カラムC = null;
NULLではないという意味の「IS NOT NULL」
MySQL記載例:select * from テーブル名 where カラムC is not null;
「IS NULL」は「対象の値はNULLではない」といった意味になります。そのため、上記のようなSQL文の場合「カラムCはNULLではない」という意味になるのでカラムCに値が入っているものが取得されます。
こちらも「!=」と似ていますが、以下のように記載しても取得されないため注意が必要です。
NGな記載例:select * from テーブル名 where カラムC != null;
~の間という意味の「BETWEEN AND」
MySQL記載例:select * from テーブル名 where カラムD between 3 and 5;
「BETWEEN AND」は「対象の値は指定された値の間である」といった意味になります。「BETWEEN AND」は上記の例のようにANDの前後に値を記載し使用します。上記のようなSQL文の場合「カラムDは3から5の間」という意味になるのでカラムDに3や4,5など、3から5までの値が入っているものが取得されます。
~の間以外という意味の「NOT BETWEEN AND」
MySQL記載例:select * from テーブル名 where カラムD not between 3 and 5;
「NOT BETWEEN AND」は「対象の値は指定された値の間以外の値である」といった意味になります。「NOT BETWEEN AND」も「BETWEEN AND」と同様にANDの前後に値を記載し使用します。上記のようなSQL文の場合「カラムDは3から5の間以外」という意味になるのでカラムDに3から5以外の値である1,2,6,7などの値が入っているものが取得されます。
~のいずれかという意味の「IN」
MySQL記載例:select * from テーブル名 where カラムD in (3,5,7);
「IN」は「対象の値は指定された値のいずれかの値である」といった意味になります。「BETWEEN AND」と少し似ていますが、「BETWEEN AND」が範囲を指定するのに対し、「IN」は固定の値を複数個指定します。上記のようなSQL文の場合「カラムDは3か5か7」という意味になるのでカラムDは3か5か7の値が入っているものが取得されます。入力されている値のみが選択されるため、4や6は取得されません。
また下記のように単数指定もできます。単数で指定した場合、「=」と同様の結果となります。
MySQL記載例:select * from テーブル名 where カラムD in (3);
~以外という意味の「NOT IN」
MySQL記載例:select * from テーブル名 where カラムD not in (3,5,7);
「NOT IN」は「対象の値は指定された値以外の値である」といった意味になります。こちらも「NOT BETWEEN AND」と少し似ていますが、「IN」の時と同様に固定の値を複数個指定します。上記のようなSQL文の場合「カラムDは3か5か7以外」という意味になるのでカラムDは3か5か7以外の値である1,2,4,6などの値が入っているものが取得されます。
「IN」の時同様こちらも単数指定できます。単数で指定した場合、「!=」と同様の結果となります。
まとめ
今回、数ある比較演算子のうちの数点を紹介させて頂きました。
今回は例として数値のみでご説明しましたが、文字列や正規表現を使用し詳細に値を取得したり、UPDATE文などで使用することで特定の文字列や数値の置換などが出来るため、知っておくと便利だと思います。