大文字と小文字を区別しない検索での LIKE の使用

Raymond Peter 2023年1月30日
  1. MySQL で LIKE を使用した大文字と小文字を区別しない検索
  2. MySQL での大文字と小文字を区別する検索
  3. MySQL での正規表現
大文字と小文字を区別しない検索での LIKE の使用

このチュートリアル記事では、LIKE 演算子を使用して列を検索する方法を説明します。これを適切に使用して、値が大文字であるか小文字であるかに関係なく、特定の基準を満たすすべての結果を含める方法を示します。

MySQL で LIKE を使用した大文字と小文字を区別しない検索

テーブルを検索する場合、テーブルを検索するときは常に WHERE の後に LIKE 演算子が使用されます。

これは、接頭辞や文字のパターンなど、不明な用語を検索する場合や、特定の条件を満たす複数のインスタンスを含める場合に特に便利です。

SELECT ステートメントの後に、検索するテーブルの列を指定し、LIKE 演算子の後に次のワイルドカードを追加します。

  • %ワイルドカードは、文字の後に配置された文字で始まる値を検索します。同様に、%記号が文字の前に配置されている場合は、文字で終わる値を検索します。
  • アンダースコア(_)ワイルドカードは、%記号を使用した後、検索を 1つの値に制限するために使用されます。

上記をさまざまな方法で使用して、さまざまな結果を生成できます。次の例は、両方のワイルドカードを使用して用語を検索する方法を示しています。

 CREATE TABLE car_models (
  brand TEXT NOT NULL,
  model TEXT NOT NULL
);
 
INSERT INTO car_models VALUES ('Toyota', 'Camry');
INSERT INTO car_models VALUES ('toyota', 'Corolla');
INSERT INTO car_models VALUES ('toyota', 'corolla');
INSERT INTO car_models VALUES ('Ford', 'Prefect');
INSERT INTO car_models VALUES ('Ford', 'fiesta');
 
SELECT * FROM car_models WHERE car_models.model LIKE '%cor%'

上記は、その順序で文字 cor を含む行のみを返します。%記号で開始および終了することにより、検索はこの順序で文字を含む単語に制限されました。

| brand |  model  |
|-------|---------|
|toyota | Corolla |
|toyota | corolla |

検索では大文字と小文字が区別されず、基準を満たす値のみが検索されました。次のステートメントを実行して、文字 c を含むすべてのモデルを返すこともできます。

SELECT * FROM car_models WHERE car_models.model LIKE '%C%'

出力:

| brand |  model  |
|-------|---------|
|Toyota |  Camry  |
|toyota | Corolla |
|toyota | corolla |
|Ford   | Prefect |

以下は、文字 c ですべてのモデルを返しました。ただし、より具体的にしたい場合は、c で始まるモデルを返すために、文字 c の後にのみ%記号を配置できます。

SELECT * FROM car_models WHERE car_models.model LIKE 'C%'

出力:

| brand |  model  |
|-------|---------|
|Toyota |  Camry  |
|toyota | Corolla |
|toyota | corolla |

MySQL での大文字と小文字を区別する検索

大文字と小文字を区別する検索が必要な場合は、LIKE 演算子の前に BINARY を追加すると、大文字と小文字が区別されます。

SELECT * FROM car_models WHERE car_models.model LIKE BINARY 'c%'

出力:

| brand |  model  |
|-------|---------|
|toyota | corolla |

大文字の C で始まるすべてのモデルは検索から除外されました。

MySQL での正規表現

より具体的な検索に正規表現を使用する方法を学ぶことは価値があります。これらには、%記号などの特殊文字が含まれているため、検索でより多くのことができます。

これは*記号で構成されており、それに続く値が複数回表示されるか、まったく表示されないシナリオが可能になります。一方、+ 記号は、次の文字が少なくとも 1 回出現する必要があることを示します。

REGEXPREGEXP_LIKE() を MySQL で使用して、特定のパターンを行進させることもできます。