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

MySQLのINSTR()関数をWHERE句で使う方法を実例付きで解説

MySQLのINSTR()関数をWHERE句で使用する方法

MySQLでINSTR()関数をWHERE句と組み合わせて使う場合、第1引数に対象テーブルのカラム名、第2引数に検索したい部分文字列を指定し、さらに比較演算子と組み合わせて条件を記述します。

INSTR()関数は、文字列の中で指定した部分文字列が最初に出現する位置を返す関数です。見つかった場合はその位置(1から始まる数値)を返し、見つからなかった場合は0を返します。この性質を利用することで、WHERE句で柔軟な部分一致検索が実現できます。

サンプルデータ: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)

INSTR()関数とWHERE句を組み合わせたクエリ例

まず、名前(Name)に「av」という文字列が含まれるレコードを抽出するクエリを見てみましょう。

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

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

3 rows in set (0.00 sec)

このクエリでは、INSTR(Name,'av') > 0という条件により、「av」が含まれるレコードだけが返されます。結果を見ると、「Gaurav」は5文字目、「Aarav」は4文字目に「av」が出現していることが、Result列の値からも確認できます。

次に、比較演算子を= 0に変更すると、逆に「av」を含まないレコードを抽出できます。

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

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

2 rows in set (0.01 sec)

このように、INSTR()関数の戻り値と比較演算子を組み合わせることで、LIKE演算子を使わずに部分一致・不一致の絞り込みが可能になります。さらに、SELECT句でも同じ関数を呼び出せば、部分文字列が出現する位置を同時に取得できるため、デバッグやデータ確認の際にも便利です。

  1. MySQLのWHERE句でSUM()関数の結果は使用できる?HAVING句を使った正しい書き方を解説

    MySQLでは、SUM()などの集計関数の結果をWHERE句で直接使用することはできません。これは、WHERE句がグループ化の前に行単位で評価されるためです。代わりに、GROUP BYと組み合わせたHAVING句を使うことで、集計結果に基づいた絞り込みが可能になります。 ここからは、実際にサンプルテーブルを作成しながら手順を確認していきましょう。 1. サンプルテーブルの作成 まず、名前と価格を持つテーブルを作成します。 mysql> create table DemoTable ( Name varchar(50), Price int ); Query OK, 0

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

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