MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLのWHERE句でLOCATE()関数を使う方法|文字列検索の実例付き解説

LOCATE()関数とWHERE句の組み合わせ方

MySQLでLOCATE()関数をWHERE句と一緒に使用する場合、第1引数に検索したい部分文字列を、第2引数に対象テーブルのカラム名を指定します。さらに、比較演算子(> や = など)と組み合わせることで、「特定の文字列を含む行」や「含まない行」を柔軟に抽出できます。

使用例:Studentテーブル

ここでは、以下のようなデータを持つ「Student」テーブルを例に説明します。

mysql> Select * from Student;

+------+---------+---------+-----------+
| Id   | Name    | Address | Subject   |
+------+---------+---------+-----------+
| 1    | Gaurav  | Delhi   | Computers |
| 2    | Aarav   | Mumbai  | History   |
| 15   | Harshit | Delhi   | Commerce  |
| 20   | Gaurav  | Jaipur  | Computers |
| 21   | Yashraj | NULL    | Math      |
+------+---------+---------+-----------+

5 rows in set (0.02 sec)

「av」を含む名前を抽出するクエリ

次のクエリは、WHERE句内でLOCATE()関数を使い、名前に「av」という文字列を含む学生のみを抽出する例です。

mysql> Select Name, LOCATE('av',name)As Result from student where LOCATE('av',Name) > 0;

+--------+--------+
| Name   | Result |
+--------+--------+
| Gaurav |      5 |
| Aarav  |      4 |
| Gaurav |      5 |
+--------+--------+

3 rows in set (0.00 sec)

結果を見ると、「Gaurav」「Aarav」のように「av」を含む名前だけが返されています。Result列には、名前の中で「av」が見つかった位置(先頭からの文字数)が表示されます。

「av」を含まない名前を抽出するクエリ

逆に、比較条件を「= 0」に変更すると、「av」を含まない行だけを取得できます。

mysql> select name, LOCATE('av',name)As Result from student where LOCATE('av',Name)=0 ;

+---------+--------+
| name    | Result |
+---------+--------+
| Harshit |      0 |
| Yashraj |      0 |
+---------+--------+

2 rows in set (0.00 sec)

ポイントまとめ

LOCATE()関数は、文字列が見つかった場合はその位置(1以上)を、見つからない場合は0を返します。そのため、「> 0」は「文字列が存在する」、「= 0」は「存在しない」という条件として機能します。また、対象カラムの値がNULLの場合はNULLが返されるため、NULLを含む可能性がある列で使う際は注意が必要です。LIKE演算子と似た用途で使えますが、LOCATE()は一致位置も同時に取得できる点が大きな利点です。

  1. MySQLのWHERE句で複数の値を取得する方法(OR演算子の使い方)

    はい、MySQLのWHERE句でも複数の値を取得できます。その場合は、OR演算子を使って複数の条件を組み合わせます。この記事では、実際にサンプルテーブルを作成し、WHERE句とOR演算子を組み合わせて複数の条件に一致するレコードを取得する手順を、具体的なSQL文とともに解説します。1. サンプルテーブルの作成まず、従業員情報を格納するテーブルを作成します。mysql> create table DemoTable1421 -> ( -> EmployeeId int NOT NULL AUTO_INCREMENT PRIMARY KEY, ->

  2. MySQLビュー(VIEW)にWHERE句を使う方法をわかりやすく解説

    MySQLビューでWHERE句を使用する方法MySQLでは、作成済みのビュー(VIEW)に対して、通常のテーブルと同じようにWHERE句を指定してデータを絞り込むことができます。基本となる構文は以下の通りです。select * from yourViewName where yourColumnName=yourValue;それでは、実際にサンプルを使って手順を確認していきましょう。1. サンプルテーブルを作成するまず、学生情報を格納するテーブルを作成します。mysql> create table DemoTable1432 -> ( -> StudentId