MySQL で行を検索して部分文字列を検索する

Mehvish Ashiq 2024年2月15日
  1. 方法 1:%ワイルドカードを使用して文字列/部分文字列を検索する
  2. 方法 2:LOCATE() 関数を使用して文字列/部分文字列を検索する
  3. まとめ
MySQL で行を検索して部分文字列を検索する

状況によっては、テーブル内の文字列またはサブ文字列を検索する必要があります。

たとえば、employee テーブルの Gmail ユーザーの数を知りたいとします。もう 1つの例は、employee テーブルで Je で始まるすべての firstname を検索することです。

ここでは、文字列または部分文字列の検索が図に示されています。検索にはさまざまな方法があります。標準 SQL の場合は POSITION()、MySQL の場合は LOCATE()%ワイルドカード、Oracle の場合は INSTR()

MySQL でサポートされているメソッドを学習し、MySQL でサブストリングを見つけるために行を検索するための最良かつ簡単な方法を観察します。それらすべてを見て、自分のケースに最適な方法を決定できます。

方法 1:%ワイルドカードを使用して文字列/部分文字列を検索する

%ワイルドカードは、文字列内の 1つまたは複数の文字を置き換えるために使用されます。このワイルドカードは LIKE 演算子で使用され、LIKE 演算子は WHERE 句で使用されます。

練習するために、employee という名前の新しいテーブルを作成しました。以下に示すサンプルコードを使用して、同じものを作成し、データを入力できます。

このようにして、同じページを見ながら学習することができます。

#Create employee table
CREATE TABLE employee(
id int not null primary key,
firstname varchar(60) not null,
lastname varchar(60) not null,
gender varchar(30) not null,
city varchar(40) not null,
email varchar(60) not null
);

#Insert data into employee table.
INSERT INTO employee VALUES 
    (1,'James','Robert','Male','London','jrober@gmail.com'),
    (2,'Mary','Patricia','Female','Berlin','patricia@gmail.com'),
    (3,'John','Michael','Male','Paris','johnmichael@yahoo.com'),
    (4,'Jennifer','Linda','Female','Lisbon','jennifer@hotmail.com'),
    (5,'William','David','Male','Rome','wdwilliam@gmail.com'),
    (6,'Elizabeth','Barbara','Female','Dublin','elibarbara011@yahoo.com'),
    (7,'Richard','Joseph','Male','Oslo', 'richard@gmail.com'),
    (8,'Susan','Jessica','Female','Hamburg','susan01@yahoo.com'),
    (9,'Thomas','Charles','Male','Texas', 'thomas.charles@hotmail.com'),
    (10,'Karen','Nancy','Female','Washington','karenofficial@gmail.com');

SELECT * FROM employee;

出力:

行を検索して mysql 内のサブストリングを検索します-employee table

%ワイルドカードを使用して文字列またはサブ文字列を見つけるために行を検索するためのさまざまなシナリオを検討することを理解しましょう。

シナリオ 1:すべての Gmail ユーザーを検索します。つまり、メールで部分文字列を見つける必要があります。

SELECT firstname, lastname from employee where email LIKE '%@gmail.com';

上記の SQL クエリは、email 文字列に gmail.com が含まれている employee テーブルから firstnamelastname を選択します。

出力:

行を検索して mysql のサブストリングを検索します-ワイルドカードを使用して Gmail ユーザーを検索します

シナリオ 2:文字 a で終わる名前を選択します。ここに、文字列 lastname があります。

SELECT lastname FROM employee WHERE lastname LIKE '%a';

出力:

行を検索して mysql の部分文字列を検索します-ワイルドカードを使用して終わる名前を検索します

シナリオ 3:L で始まり、n で終わり、間に 4 文字の city 名を見つけましょう。1つのアンダースコア(_)は 1 文字用です。

SELECT city FROM employee WHERE city LIKE 'L____n';

出力:

行を検索して mysql のサブストリングを検索します-ワイルドカードを使用して n を含む開始終了文字を検討する都市を検索します

ワイルドカード文字の詳細については、こちらをご覧ください。

方法 2:LOCATE() 関数を使用して文字列/部分文字列を検索する

LOCATE 関数は、文字列内で最初に出現する部分文字列を返します。元の文字列内に部分文字列が見つからない場合は、0 を返します。

この関数は大文字と小文字を区別しない検索を実行します。つまり、HELLOhelloLOCATE 関数と同じです。次の構文で使用されます。

LOCATE(substring, string, start)

上記の構文では、substring および string という名前の最初の 2つのパラメーターは必須ですが、start という名前の 3 番目のパラメーターはオプションです。

出力がどのように見えるかについて質問があるかもしれませんか?次の画像で理解しましょう。

行を検索して mysql の部分文字列を検索します-検索機能を理解します

SELECT LOCATE("hotmail", email) FROM employee;

出力:

行を検索して mysql のサブストリングを検索します-hotmail を検索します

まとめ

さまざまなデータベースプラットフォームがさまざまな方法をサポートしていると結論付けました。LOCATE() やワイルドカードは MySQL と互換性があります。

例を使用して、MySQL がサポートする文字列または部分文字列を検索する方法を学びました。そして、理解するために出力を観察します。

著者: Mehvish Ashiq
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

関連記事 - MySQL String