LIKE句(ライクく)とは | 意味や読み方など丁寧でわかりやすい用語解説

LIKE句(ライクく)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

ライク句 (ライクク)

英語表記

LIKE clause (ライク クラウス)

用語解説

LIKE句は、リレーショナルデータベースを操作するための言語であるSQLにおいて、文字列の部分一致検索を行うために使用される述語である。主にSELECT文のWHERE句に指定し、特定のパターンに一致するデータを持つ行を抽出する際に用いられる。完全一致を判定する等号(=)とは異なり、LIKE句はより柔軟な条件での文字列検索を可能にする。例えば、顧客名簿から「鈴木」という姓を持つ顧客をすべて探し出したり、商品名に「Pro」という単語が含まれる商品を一覧表示したりする場合に非常に有効である。このように、検索したい文字列の一部しかわからない場合や、ある特定のパターンを持つデータをまとめて取得したい場合に活用される。

LIKE句の最大の特徴は、「ワイルドカード」と呼ばれる特殊な文字を使用できる点にある。標準的なSQLでは、主に二種類のワイルドカードが定義されている。一つはパーセント記号(%)で、これは〇文字以上の任意の文字列を表す。もう一つはアンダースコア記号(_)で、こちらは任意の一文字を表す。これらのワイルドカードを検索したい文字列のパターンに組み込むことで、様々な条件の検索を実現する。

パーセント(%)の具体的な使い方として、前方一致、後方一致、中間一致の三つのパターンが代表的である。前方一致検索は、指定した文字列で始まるデータを検索するもので、「'検索語%'」のようにパターンの末尾にパーセントを配置する。例えば、社員テーブルの氏名列に対して「WHERE shimei LIKE '佐藤%'」と指定すれば、「佐藤太郎」や「佐藤花子」といった「佐藤」で始まる氏名のデータがすべて抽出される。後方一致検索は、指定した文字列で終わるデータを検索するもので、「'%検索語'」のようにパターンの先頭にパーセントを配置する。例えば、「WHERE file_name LIKE '%.pdf'」とすれば、拡張子が「.pdf」であるファイル名のデータをすべて見つけ出すことができる。中間一致検索は、指定した文字列をデータ内のどこかに含むものを検索する最も柔軟な方法で、「'%検索語%'」のようにパターンの前後をパーセントで挟む。例えば、「WHERE product_name LIKE '%パソコン%'」と指定すると、「高性能パソコン」や「ノートパソコンA5」など、商品名に「パソコン」という文字列が含まれるデータがすべて対象となる。

一方、アンダースコア(_)は、パーセントとは異なり、文字数を指定した検索に用いられる。アンダースコア一つが任意の一文字に相当するため、例えば「WHERE word LIKE 'c_t'」と指定すると、「cat」や「cot」は一致するが、「cart」のように中間の文字数が異なるものは一致しない。このように、文字数が固定されているが、特定の位置の文字が不明または任意である場合に役立つ。例えば、特定のフォーマットを持つ会員番号「AB_001」のようなデータを検索する際に「WHERE member_id LIKE 'AB_001'」とすれば、3文字目が任意の英数字である会員番号を抽出できる。

ワイルドカード文字であるパーセント(%)やアンダースコア(_)そのものを文字列として検索したい場合も存在する。例えば、データ内に「50%」や「item_A」といった文字列が含まれている場合、そのままLIKE句で指定するとワイルドカードとして解釈されてしまう。このような問題を回避するために、ESCAPE句が用意されている。ESCAPE句では、エスケープ文字として任意の文字を一つ指定し、そのエスケープ文字の直後にあるワイルドカードを単なる文字として扱うようにデータベースに指示する。例えば、「WHERE comment LIKE '%50!%%' ESCAPE '!'」と記述すると、「!」がエスケープ文字となり、その直後の「%」はワイルドカードではなくパーセント記号そのものとして解釈されるため、「達成率50%」のような文字列を正しく検索できる。

また、LIKE句の否定形としてNOT LIKE句が存在する。これは、指定したパターンに一致しないデータを抽出するためのものである。例えば、「WHERE department_name NOT LIKE '%営業%'」と指定すれば、「営業」という文字列を含まない部署名を持つデータのみが抽出される。

実務でLIKE句を使用する際には、パフォーマンスについて注意が必要である。特に、パーセント(%)をパターンの先頭に使用する後方一致や中間一致検索は、データベースのインデックスが効率的に利用できず、テーブル内の全データを一つずつ調べる全件検索(フルテーブルスキャン)を引き起こしやすい。データ量が少ない場合は問題にならないが、数百万、数千万件といった大量のデータを扱うシステムでは、検索速度が著しく低下し、システム全体の性能に悪影響を及ぼす可能性がある。一方、前方一致検索('検索語%')の場合は、先頭の文字列が確定しているため、インデックスを利用した高速な検索が可能な場合が多い。したがって、システムを設計・開発する際には、可能な限り前方一致検索で要件を満たせるようなデータ構造や検索方法を検討することが望ましい。もし中間一致検索や後方一致検索が頻繁に必要となる場合は、LIKE句の代わりに全文検索エンジンなどの専用技術の導入を検討することも重要である。LIKE句は非常に便利で強力な機能であるが、その特性とパフォーマンスへの影響を正しく理解し、適切に使い分けることがシステムエンジニアには求められる。

LIKE句(ライクく)とは | 意味や読み方など丁寧でわかりやすい用語解説 | いっしー@Webエンジニア