本記事では、SQLのLINE演算子について解説します。
前回ではWHERE句を使って、特定条件に当てはまる場合のみ取得しました。
たとえば、nameが「佐藤」の場合だと表示するなどですね。
今回はnameに「佐藤」という文字列が含まれている場合のみ、取得するというのをやってみましょう。
SQLのLIKE演算子とは?
LINE演算子とは、特定の文字列が含まれている場合のみ取得できる演算子です。
WHERE句では「=」や不等式を使って特定条件のデータのみ取得できますよね。
ここの「=」や不等式の変わりに「LIKE」を使うことで、特定の文字列が含まれている場合に取得ができるのです。
ワイルドカードとは?
LINE演算子を使う際に必要なのが、ワイルドカードというものです。
ワイルドカードとは、どんな文字列にも一致する記号のことであり「%」と書きます。
LINE演算子では「%」を使うことで、特定の文字列が含まれている場合のみ、取得をすることができるのです。
なお、ワイルドカードはSQLに限らず、様々なプログラミング言語内で使われています。
SQLのLIKE演算子の使い方
それでは、SQLのLIKE演算子の具体的な使い方をみていきましょう。
次の項目に従って解説していきます。
- 特定文字列が含まれている場合に取得
- 特定文字列が前方に含まれている場合に取得
- 特定文字列が後方に含まれている場合に取得
ポイントはワイルドカード「%」を上手く使うことです。
「%」を使うことで、たとえば文字列の最初に「佐藤」が含まれている場合や、文字列の最後に「佐藤」が含まれている場合、などを表すことができます。
なお、今回は第1回目の記事で作成したテーブルを使って解説します。第1回目の記事で演習用のテーブルを作っていない方は、【SQL入門編1】初心者必見!SQLのクエリの書き方を学ぼうを読んで予め作成してくださいね。
特定文字列が含まれている場合に取得
まず特定文字列が含まれている場合に取得する方法をみていきましょう。
○コード例
SELECT * FROM TEST.Student WHERE birthday LIKE "%2000-%";
○実行結果
上記のコードでは、WHERE句でLIKE演算子を使っています。
「%」で文字列を囲むことにより、その文字列が含まれている場合に取得ができるのです。
今回は「2000-」という文字列がbirthdayカラムに含まれているレコードのみ取得しています。
これがLINE演算子の基本的な使い方ですね。
特定文字列が前方に含まれている場合に取得
続いて、特定文字列が文字列の前方に含まれている場合に取得する方法です。
○コード例
SELECT * FROM TEST.Student WHERE birthday LIKE "1998-%";
○実行結果
先程同様LIKE演算子を使っていますね。
ただ、さっきは「%」を2つ使っていましたが、今回は後ろにしか使っていません。
「%」を後ろのみ使うことで、特定文字列から始まる文字列のみを取得できるのです。
今回は「1998-」という文字列から始まる文字列のみを取得しています。
このようにLIKE演算子では「%」を上手く使用します。
特定文字列が後方に含まれている場合に取得
続いて、特定文字列が後方に含まれている場合に取得する方法をみていきましょう。
○コード例
SELECT * FROM TEST.Student WHERE name LIKE "%藤";
○実行結果
先程とは逆に「%」を前にしか使っていませんね。
「%」を前のみ使うことで、特定文字列で終わる文字列のみを取得できるのです。
今回はnameカラムが「藤」という文字列で終わる場合のみ取得しています。
名前の後ろに「藤」がついている人は数名いたので、表示がされました。
○コード例
SELECT * FROM TEST.Student WHERE name LIKE "藤%";
○実行結果
先程のように「%」を後ろに使うと、何も表示がされません。
名前の前に「藤」がついている人は一人もいないからですね。
まとめると、このようになります。
- 「%」を後ろに使うと、特定文字列から始まる文字列を取得
- 「%」を前に使うと、特定文字列で終わる文字列を取得
補足:カラムに何も入っていない場合のみ表示するには
LINE演算子の話とは逸れますが、カラムに何も入っていない場合のみ、表示させたい場合はどうすれば良いのでしょうか?
この場合は「is NULL」というものを使います。
○コード例
SELECT * FROM TEST.Student WHERE TestScore is NULL;
○実行結果
上記のコードはWHERE句で「is NULL」を使うことで、TestScoreカラムに何も入っていない場合のみ、表示させるようにしています。
今回はTestScoreの全てにデータが入っていたので、何も表示がされませんでした。
このように「is NULL」を使うことで、空のカラムがあった場合に抽出が可能です。
注意点ですが、「TestScore = NULL」という書き方では、空のカラムは抽出できません。
NULLを使う場合に限り、「is」を使うルールになっていますので、間違えないようにしましょう。
また、「is not NULL」を使うことで、カラムに何かデータが入っている場合のみ、表示させることもできます。
○コード例
SELECT * FROM TEST.Student WHERE TestScore is not NULL;
○実行結果
「is not NULL」でTestScoreカラムにデータが入っている場合のみ、抽出しました。
「is NULL」はたまに使うことであるので、やり方を覚えておきましょう。
まとめ
本記事ではSQLのLIKE演算子について解説しました。
LIKE演算子によって特定の文字列が含まれている場合のみ抽出できることが、お分かり頂けたかと思います。
ポイントはワイルドカード「%」を使って、「前方が特定条件と一致しているか」「後方が特定条件と一致しているか」などを判定できるようにすることです。
LIKE演算子の使い方はWHERE句の基本ですので必ず覚えましょう。
次回は、AND演算子やOR演算子の使い方を解説していきます。