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

MySQLのINSTR関数とLIKE演算子の共通点とは?同じ結果を返す2つの検索方法

MySQLでは、INSTR()関数LIKE演算子のどちらを使っても、特定のパターンを検索・照合することができます。そして、両者は同じ結果を返すという共通点があります。

この挙動は、実際に「Student」テーブルを使った例で確認できます。

INSTR()関数を使った検索例

例えば、「Student」テーブルから、名前に「av」という文字列が含まれるレコードを検索したいとします。INSTR()関数を使うと、以下のように記述できます。

mysql> Select Name from student where INSTR(name, 'av') > 0;
+--------+
| Name |
+--------+
| Gaurav |
| Aarav |
| Gaurav |
+--------+
3 rows in set (0.00 sec)

INSTR()関数は、指定した文字列が対象のカラム内に見つかった場合、その開始位置を返します。見つからない場合は0を返すため、「INSTR(name, 'av') > 0」という条件で「avを含む名前」を抽出できるのです。

LIKE演算子を使った検索例

同じ検索をLIKE演算子で行う場合は、ワイルドカード「%」を組み合わせて、次のように記述します。

mysql> Select Name from student where Name LIKE '%av%';
+--------+
| Name |
+--------+
| Gaurav |
| Aarav |
| Gaurav |
+--------+
3 rows in set (0.00 sec)

実行結果の比較

上記の2つのクエリは、記述方法こそ異なりますが、まったく同じ結果を返します。どちらの方法でも「av」という文字列を含む名前(Gaurav、Aarav)が正しく抽出されています。

このように、部分一致の検索という目的であれば、INSTR()関数とLIKE演算子は互いに代替可能な手段と言えます。用途に応じて、可読性やインデックスの利用状況などを考慮して使い分けるとよいでしょう。

  1. MySQLでidとnameの条件を指定してテーブルからデータを選択する方法

    MySQLでは、WHERE句を使うことで、idやnameなど複数の条件を組み合わせてテーブルから目的のデータを抽出できます。この記事では、実際にテーブルを作成し、データを挿入したうえで、idとnameの両方に条件を設定してSELECTクエリを実行する手順を解説します。 1. テーブルの作成 まず、CREATE TABLE文を使ってサンプルテーブルを作成します。ここでは、自動採番されるStudentIdを主キーとし、学生名を格納するStudentNameカラムを定義します。 mysql> create table DemoTable819( StudentId int NOT NU

  2. MySQLでテーブルの列名とデータ型を抽出する方法

    MySQLでテーブルに含まれる列名(カラム名)とそのデータ型を一覧として取得したい場合は、INFORMATION_SCHEMA.COLUMNS テーブルを利用するのが便利です。この方法を使えば、SQLを1つ実行するだけで、指定したデータベース・テーブル内のすべての列の情報を簡単に抽出できます。INFORMATION_SCHEMA.COLUMNSとはINFORMATION_SCHEMA.COLUMNS は、MySQLサーバーが管理しているメタデータ(スキーマ情報)を格納するシステムビューの一つです。データベース名(table_schema)やテーブル名(table_name)、列名(column