SQL Server 入門 SQL Server 入門

ホーム > SQL の基本 > WHERE 句でよく使う比較演算子

WHERE 句でよく使う比較演算子

WHERE 句でよく使う比較演算子を知っておこう

前回はテーブルから検索条件を指定してレコードを取得する で、検索条件を指定して、その条件にあったレコードのみを取得しました。

ここでは、WHERE 句で検索条件を指定するのによく使う、比較演算子を確認しておきましょう。

WHERE 句でよく使う比較演算子

まずは、感覚的に使い方がわかるような比較演算子には、以下のものがあります。

  • =
  • <> (T-SQL では != も使えますが <> のほうが標準です。)
  • >
  • <
  • >=
  • <=

その他に良く使われる比較演算子には次のようなものがあります。

[A] BETWEEN [B] AND [C]

[A] が [B] <= [A] <= [C] であった時に True を返します。

[B] か [C] かのどちらかが NULL の時は評価の結果が UNKNOWN となり、片方の条件と合っていても、行を取得することができません。

例えば、ValidDateFrom: 2017-01-01 で ValidDateTo: NULL というレコードがあったとして、本来は終了日なしという意味だとしても、 WHERE [今日の日付] BETWEEN ValidDateFrom AND ValidDateTo で条件を指定した場合、このレコードはひっかかってきません。

NULL が入りそうな場合は、ISNULL などを使って NULL を値に置き換えるなど、気をつけましょう。


[A] LIKE [パターン]

[A] がパターンにマッチする時に True を返します。

パターンに良く使われるのは、ワイルドカードの % です。 例えば LastName に 「 yama 」 が含まれているお客さんのレコードを取得したい場合は以下のように指定することができます。。

SELECT  *
FROM    Customers
WHERE   LastName LIKE '%yama%';

他にも一文字用のワイルドカードや、レンジでパターンマッチングさせる方法もあります。


[A] IN ([B], [C], ..)

[A] がカッコ内の要素のいずれかに等しければ True を返します。

[A] IN (SELECT [カラム名] FROM [テーブル名]) のように、他のテーブルのカラムに値が存在しているかチェックすることもできます。

例えば、過去、注文をしたことがあるお客さんを調べる為に Orders テーブルに CustomerID が存在している Customers のレコードを取得したい時は以下のように指定することができます。

SELECT  *
FROM    Customers
WHERE   CustomerID IN (SELECT CustomerID FROM Orders);

EXISTS (サブクエリー)

サブクエリが行を含む場合に True を返します。

例えば、先ほど IN で取得しようとしたのと同等のデータを以下のように取得することができます。

SELECT  *
FROM    Customers AS C
WHERE   EXISTS
        (SELECT *
         FROM   Orders AS O
         WHERE  O.CustomerID = C.CustomerID);

IN では、ひとつのカラムでしか条件を指定できませんが、EXISTS を使うと複数のカラムが合致する行を取得することができます。

例えば、先ほどの条件に 「 注文したお店の市とお客さんの住所の市が同じ 」 という条件も追加したい場合は以下のようになります。

SELECT  *
FROM    Customers AS C
WHERE   EXISTS
        (SELECT *
         FROM   Orders AS O
         WHERE  O.CustomerID = C.CustomerID
            	AND O.StoreCity = C.AddressCity);

このように、複数の条件を指定したい時は AND を使います。 どちらかの条件に合う行を取得したい場合は OR を使います。

また、これらの BETWEEN, IN, EXISTS, LIKE は、NOT BETWEEN, NOT IN, NOT EXISTS, NOT LIKE のように NOT を前につけることで、そうでないレコードを抽出することができます。


次は、クエリーの結果を並べ替えてみましょう。

次へ クエリーの結果を並べ替える

SQL Server 関連の人気書籍
ホーム > SQL の基本 > WHERE 句でよく使う比較演算子