このサイトはアドセンスやアフィリエイト広告を利用しています

SQL

SQLのWHERE条件式で使う IN LIKE BETWEEN の使い方と違い

SQLでSELECT * FROM テーブル名でデータを抽出したあとにWHEREで条件を絞り込む際に使う「IN」「LIKE」「BETWEEN」の使い方の基本をご紹介します

SQLの IN は 条件を複数指定できるので便利

例えば「都道府県」のカラムがあるとします。そこから、「東京」「大阪」「福岡」を含むレコードを抽出したいとします。そんなときに便利

SELECT 都道府県 FROM テーブル名
WHERE 都道府県 IN (”東京”,"大阪",”福岡”)

とカンマ区切りで複数条件を指定することができます

条件から外したい場合は NOT IN を使う

たとえば、四国を条件から外したい場合

四国は徳島、香川、高知、愛媛を NOT INで指定してあげる

SELECT 都道府県 FROM テーブル名
WHERE 都道府県 NOT IN (”徳島”,"香川",”高知”,”愛媛”)

っと記載するとして 都道府県から四県を外した情報を抽出できます

SQLの IN は文字列だけじゃなく数字も検索できる

上の例では文字列で検索しましたが、こちらは数字でも検索できます

例えば、商品id で特定の商品を検索したい場合

SELECT 商品id FROM テーブル名
WHERE 商品Id IN (1,4,10)

というように検索すればOKです。もちろん NOT IN もつかえます

SQLの LIKE は 文字列専用検索

SQLのLIKEは文字列を検索するようです

例えば「都道府県」のカラムがあるとします。そこから、「東京」を含むレコードを抽出したいとします。

SELECT 都道府県 FROM テーブル名
WHERE 都道府県 LIKE ”東京”

SQLのLIKEが便利なのはあいまい検索ができる

完全一致以外に前方一致、後方一致、部分一致の検索ができる

%は0文字以上複数文字のワイルドカードになります
_が1文字のワイルドカード  2文字など文字数を指定したい場合は アンダースコアを2つなど指定の数入れてください

  • 前方一致: 検索キーワード% もしくは 検索キーワード_
  • 後方一致: %検索キーワード もしくは 検索キーワード
  • 部分一致: %検索キーワード% もしくは _検索キーワード_

前方一致の使い方

たとえば 名字の最初の1文字が「川」の人を探す場合

SELECT 名字 FROM テーブル名
WHERE 名字 LIKE ”川%”

すると、
川口
川田
川中島

と言った感じに最初に川が付く人が検索できます

アンダースコアにした場合は1文字マッチング

SELECT 名字 FROM テーブル名
WHERE 名字 LIKE ”川_”

川口
川田

このように川+1文字の検索となります
2文字など文字数を指定したい場合は アンダースコアを2つなど指定の数入れてください

たとえば3文字の名字で大が付く人の場合

SELECT 名字 FROM テーブル名
WHERE 名字 LIKE ”大_ _”

大久保

大_ _ となります アンダースコア2つ並べると一本の線に見えるので、あえてここではスペースを開けています

実際使う場合は連続で記入してください

後方一致の使い方

たとえば 名前の最初の1文字が「川」の人を探す場合

SELECT 名前 FROM テーブル名
WHERE 名前 LIKE ”%郎”

すると、
太郎
二郎
三多郎

と言った感じに最後に郎が付く人が検索できます

SELECT 名前 FROM テーブル名
WHERE 名前 LIKE ”_郎”

太郎
二郎

このようにすると1文字+郎の2文字の名前の人が抽出されます
2文字など文字数を指定したい場合は アンダースコアを2つなど指定の数入れてください

部分一致の使い方

前後に%をつけた場合

SELECT 会社名 FROM テーブル名
WHERE 会社名 LIKE ”%菱%”

三菱電機
三菱商事
三菱自動車
菱山テクノロジー

%は0文字以上の一致なので、”%菱%”と指定して先頭にない場合でもマッチします

このように%キーワード% キーワードの前後の一致した

東京大阪福岡と複数3つを指定したい場合は

SELECT 都道府県 FROM テーブル名
WHERE 都道府県 LIKE ”東京” OR 都道府県 LIKE ”大阪” OR 都道府県 LIKE ”福岡”

このようにORで指定しなくてはいけません。

NOT IN で含まないで検索もできます

SELECT 都道府県 FROM テーブル名
WHERE 都道府県 NOT IIKE ”%京%”

これで京都、東京が除外された都道府県リストが表示されます

大阪
神奈川
などなど

BETWEENは数字や日付型を範囲指定 文字列は使えないと思うこと

SELECT 売上 FROM テーブル名
WHERE 売上 BETWEEN 10000 AND 20000

order_id 売上
1010201 12344
2323523 14343

注意点として、BETWEENの文字の指定は←が小さい数字、右が大きい数字となるようにしましょう

WHERE 売上 BETWEEN 小さい数字 AND 大きい数字

文字列でも動く場合でもありますが、基本動かないと思って使いましょう

特によくあるのが、文字列で日付が入っているデータ型を比較してします場合です

誕生日とかカラムの設定が日付型で指定していない場合エラーがでますので周囲

NOT BETWEENで範囲に含まれない指定も可能

たとえば、

SELECT ユーザーID FROM テーブル名
WHERE ユーザーID NOT BETWEEN 100 AND 200

ユーザーID
099
2342
323

-SQL
-