演算子と述語②



演算子と述語②

今回は、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を説明します。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です