検索

キーワード


目次

【SQL】LIKE句について

  • 公開日:2020-10-22 19:20:11
  • 最終更新日:2020-12-26 23:17:46
【SQL】LIKE句について

Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!

フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。

こんにちは。駆け出しプログラマーの松下です!

WHEREで条件を指定するときに使うLIKEについて説明します。

SQLについて学び始めたばかりという方の参考になれば幸いです。


LIKEとは

LIKEはあいまい検索に使います。WHERE句で条件を指定するときに使用し、○○を含んだ文字列があるかどうかを探せます。

SELECT * FROM テーブル名 WHERE カラム名 LIKE パターン;

WHEREの後ろに対象の列名を入れ、LIKEの後ろに探したい文字列のパターンを記述します。

パターンは、ワイルドカード文字と呼ばれる記号「%」か「_」と探したい文字とを組み合わせて使います。

LIKEで用いるワイルドカード文字とその説明

例えば「%田」であれば最後の文字が「田」で終わる文字全てが当てはまり、「_田」は「田」で終わる2文字が当てはまるといった要領です。


ワイルドカードで当てはまる文字列の例

では実際に見てみましょう。

Microsoft SQL Serverを使用し、あらかじめ作成した下記の"member"テーブルからのデータ取得をしてみます。

member テーブル

SELECT * FROM member WHERE name LIKE '%田';
SELECT * FROM member WHERE name LIKE '_田';

ワイルドカード文字の使用例

前者では取得できていた「久保田」が後者ではありません。

このように_は1文字を表すので、探したい文字列の文字数が決まっている場合に使用します。


一方で%は0文字以上と自由度が高いので、%と%で挟めばその文字を含むもの全てを探せます。

SELECT * FROM member WHERE name LIKE '%田%';

「%」で挟んで「田」を含む名字を取得した例

先程取得できていた名前に加え、田から始まる「田中」も取得できました。


NOT LIKE

指定した条件と一致しないものを探すときはNOT LIKEを使います。

SELECT * FROM member WHERE name NOT LIKE '%田%';

NOT LIKEの使用例

田を含まない名前だけが取得できました。


複数の条件を指定する

LIKE句でも条件が複数あるときはANDやORと組み合わせます。

SELECT * FROM member WHERE name LIKE '山%' AND name LIKE '%田%';
SELECT * FROM member WHERE name NOT LIKE '%田%' OR name LIKE '山%';

複数のLIKEを使う条件を指定した例


ANDでは両方の条件に当てはまらないといけないので、山で始まりかつ田が含まれる「山田」だけが取得されています。

ORはどちらかに当てはまればいいので、「NOT LIKE '%田%'」で田が含まれない名前が取得された後に、「LIKE '山%'」で山から始まる名前も取得されるので「山田」も表示されています。


特殊な文字について

エスケープ処理

LIKE句で特別な意味を持つ%や_ですが、これらを含む文字列を探したいときは¥を前につけてエスケープ処理をします。

また¥を探すときも同様に¥をつけます。

それぞれ「\%」「\_」「\\」のように使います。


そしてエスケープ処理をするために使われる文字はデフォルトでは¥ですが、後ろにESCAPEをつけ指定することで別の文字に変更することもできます。

下記の"member2"テーブルからのデータ取得をしてみます。

member2 テーブル

SELECT * FROM member2 WHERE name LIKE '%|_%' ESCAPE '|';

エスケープ処理の例

今回は¥の代わりに「|」に変更したので、|の後ろの_は普通の文字として探すことができます。

_がついているものだけが取得されました。


しかしSQLでの扱いが面倒になるので、データ設計の際に%や_が入らないようにするのが良いでしょう。


スペースの扱い

スペースも1文字として扱われます。

SELECT * FROM member2 WHERE name LIKE '____taro';

スペースが1文字として数えられる例

_を4つ並べたので、taroの前が4文字のものが取得されます。

スペースも1文字と数えられるためこのような結果となりました。



【著者】

松下

今年文系未経験からプログラマとなりました。 同じ初心者の方に分かりやすいよう簡潔な記事を心がけていきます。 趣味はサッカー観戦と洋服です。

編集した記事一覧

正社員/フリーランスの方でこのようなお悩みありませんか?

  • 自分に合う案件を定期的に紹介してもらいたい
  • 週2、リモートワークなど自由な働き方をしてみたい
  • 面倒な案件探し・契約周りは任せて仕事に集中したい

そのような方はぜひ、Workteriaサイトをご利用ください!

  • 定期的にご本人に合う高額案件を紹介

  • リモートワークなど自由な働き方ができる案件多数

  • 専属エージェントが契約や請求をトータルサポート

よく読まれている記事