MySQL で文字列が特定のデータを含むかどうかをチェックする
- MySQL の LOCATE 関数を使用して、文字列に MySQL の特定のデータが含まれているかどうかを確認する
- MySQL の INSTR 関数を使用して、文字列に MySQL の特定のデータが含まれているかどうかを確認する
- MySQL の LIKE 演算子を使用して、文字列に 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つの手法を使用すると、テーブルから文字列の存在を効率的に見つけることができます。