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()は一致位置も同時に取得できる点が大きな利点です。
-
MySQLのWHERE句で複数の値を取得する方法(OR演算子の使い方)
はい、MySQLのWHERE句でも複数の値を取得できます。その場合は、OR演算子を使って複数の条件を組み合わせます。この記事では、実際にサンプルテーブルを作成し、WHERE句とOR演算子を組み合わせて複数の条件に一致するレコードを取得する手順を、具体的なSQL文とともに解説します。1. サンプルテーブルの作成まず、従業員情報を格納するテーブルを作成します。mysql> create table DemoTable1421 -> ( -> EmployeeId int NOT NULL AUTO_INCREMENT PRIMARY KEY, ->
-
MySQLビュー(VIEW)にWHERE句を使う方法をわかりやすく解説
MySQLビューでWHERE句を使用する方法MySQLでは、作成済みのビュー(VIEW)に対して、通常のテーブルと同じようにWHERE句を指定してデータを絞り込むことができます。基本となる構文は以下の通りです。select * from yourViewName where yourColumnName=yourValue;それでは、実際にサンプルを使って手順を確認していきましょう。1. サンプルテーブルを作成するまず、学生情報を格納するテーブルを作成します。mysql> create table DemoTable1432 -> ( -> StudentId