MySQL で文字列が特定のデータを含むかどうかをチェックする

Preet Sanghavi 2023年1月30日
  1. MySQL の LOCATE 関数を使用して、文字列に MySQL の特定のデータが含まれているかどうかを確認する
  2. MySQL の INSTR 関数を使用して、文字列に MySQL の特定のデータが含まれているかどうかを確認する
  3. MySQL の LIKE 演算子を使用して、文字列に MySQL の特定のデータが含まれているかどうかを確認する
MySQL で文字列が特定のデータを含むかどうかをチェックする

このチュートリアルでは、MySQL のテーブルに文字列が含まれていることを確認するためのさまざまな方法を検討することを目的としています。

MySQL では次のテクニックを使用します。

  • INSTR 関数
  • LOCATE 関数
  • LIKE 演算子

ただし、開始する前に、操作するダミーデータセットを作成します。ここでは、テーブル student_details とその中のいくつかの行を作成します。

-- create the table student_details
CREATE TABLE student_details(
  stu_id int,
  stu_firstName varchar(255) DEFAULT NULL,
  stu_lastName varchar(255) DEFAULT NULL,
  primary key(stu_id)
);
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName) 
 VALUES(1,"Preet","Sanghavi"),
 (2,"Rich","John"),
 (3,"Veron","Brow"),
 (4,"Geo","Jos"),
 (5,"Hash","Shah"),
 (6,"Sachin","Parker"),
 (7,"David","Miller");

上記のクエリは、学生の名前と名前を含む行とともにテーブルを作成します。データのエントリを表示するために、次のコードを使用します。

SELECT * FROM student_details;

上記のコードは次の出力を提供します。

stu_id	stu_firstName	stu_lastName
1	      Preet	        Sanghavi
2	      Rich	        John
3	      Veron	        Brow
4	      Geo	        Jos
5	      Hash	        Shah
6	      Sachin	    Parker
7	      David	        Miller

家系の名前に Parker という単語が含まれているすべての生徒を見つけることを目指しましょう。

MySQL の LOCATE 関数を使用して、文字列に MySQL の特定のデータが含まれているかどうかを確認する

MySQL の LOCATE 関数は通常、LOCATE(substr, str) などの 2つの引数を取ります。ここで、substr は最初の引数として渡される部分文字列であり、str は 2 番目の引数として渡される文字列です。LOCATE 関数の出力は、引数として渡される文字列が出現する最初の行です。この関数の動作を確認するには、以下のコードを参照してください。

-- finding the word 'Park' from the table where the last name of the student is Park.
SELECT * FROM student_details WHERE LOCATE('Park', stu_lastName) > 0 ;

上記のコードは、次の出力を提供します。

stu_id	stu_firstName	stu_lastName
6	      Sachin	      Parker

MySQL の INSTR 関数を使用して、文字列に MySQL の特定のデータが含まれているかどうかを確認する

LOCATE 関数と同様に、INSTR 関数 INSTR(str, substr) は 2つの引数を取ります。ただし、この関数は、パラメータとして渡された部分文字列に文字列が最初に出現したときのインデックス値を返します。ここで、str は最初の引数として渡される文字列であり、substr は 2 番目の引数として渡される部分文字列です。この関数の動作を確認するには、以下のコードを参照してください。

-- finding the word 'Park' from the table where the last name of the student is Park.
SELECT * FROM student_details WHERE INSTR(stu_lastName , 'Parker') > 0;

上記のコードは次の出力を提供します。

stu_id	stu_firstName	stu_lastName
6	      Sachin	      Parker
LOCATE(substr,str) 関数と INSTR(str,substr) 関数で引数が渡される方法は異なります。

MySQL の LIKE 演算子を使用して、文字列に MySQL の特定のデータが含まれているかどうかを確認する

データ内の文字列の存在を見つける別の方法は、LIKE を使用することです。この演算子は、特定の文字列を検索するために WHERE 句とともに使用されます。この手法の動作を確認するには、以下のコードを参照してください。

-- finding the word 'Park' from the table where the last name of the student is Parker.
SELECT * FROM student_details WHERE stu_lastName LIKE 'Parker' ;

上記のコードでも、次の出力が得られます。

stu_id	stu_firstName	stu_lastName
6	      Sachin	      Parker

さらに、ワイルドカードとも呼ばれる%も LIKE 演算子とともに使用されます。このワイルドカードは、その名前が示すように、その場所にある文字なし、1 文字、または複数文字を表します。このワイルドカードの動作を確認するには、以下のコードを参照します。

-- finding the student with last name ending in 'arker' from the table.
SELECT * FROM student_details WHERE stu_lastName LIKE '%arker' ;

上記のコードでも、次の出力が得られます。

stu_id	stu_firstName	stu_lastName
6	      Sachin	      Parker

したがって、上記の 3つの手法を使用すると、テーブルから文字列の存在を効率的に見つけることができます。

著者: Preet Sanghavi
Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

関連記事 - MySQL Query