演算子と述語②
今回は、LIKE述語を説明します。=演算子を使うと特定の文字列と一致するデータの抽出ができますが、完全一致ではなく、部分的な一致でもデータを取り出したい場合があります。その時は、LIKE述語を使います。LIKE述語はワイルドカードと組み合わせて使用します。
今回は”書籍”テーブルを使用します。このテーブルは飲食店の蔵書を分類したものです。
1.1 %ワイルドカード
まず、入門書を抽出してみましょう。シリーズ名に”入門”という文字が含まれている書籍を探します。SQLは以下のとおりとなります。
SELECT * FROM 書籍 WHERE シリーズ名 LIKE “%入門%”
結果は以下のとおりとなります。
次に、シリーズ名から、”入門”で始まる文字を探します。SQLは以下のとおりとなります。(最初の”%”を外します)
SELECT * FROM 書籍 WHERE シリーズ名 LIKE “入門%”
結果は以下のとおりとなります。
この通りの結果となりました。%で囲った場合、%で囲った文字列が抽出されますが、前後の文字数は問われません。単に含まれていれば、TRUEを返します。次は”_”ワイルドカードを見てみます。
1.2 _ワイルドカード
”%”は任意の文字数に対するワイルドカードでしたが、”_”は、1文字に対応するワイルドカードです。早速試しましょう。まず、分類コードが”EU”で始まる書籍を探します。SQLは以下のとおりとなります。
SELECT * FROM 書籍 WHERE 分類 LIKE “EU_”
結果は以下のとおりとなります。EUで始まり、3文字目がワイルドカードとなりますから以下の結果となります。
続いて、以下のSQLを実行します。
SELECT * FROM 書籍 WHERE 分類 LIKE “E_”
結果は、0件でした。”分類コード”は、どのデータも3桁で構成されていますが、このSQLだとEの後、任意の1文字すなわち2文字のデータを探すことになるので結果は0件となってしまいます。Eで始まり、以降の文字数は問わない場合、”_”ではなく、”%”を使います。
SELECT * FROM 書籍 WHERE 分類 LIKE “E%”
結果は、WHERE 分類 LIKE “EU_”での実行結果と同一になります。
LIKE述語は以上で終わりです。次回はIN/BETWEENを説明します。
コメントを残す