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

MySQLで列の末尾の文字列を検索するクエリの書き方

MySQLでは、RIGHT() 関数と INSTR() 関数を組み合わせることで、列の値の末尾部分(たとえば氏名の名前部分など)を対象に検索することができます。この記事では、実際にテーブルを作成し、データを挿入して、末尾の文字列を検索するクエリの実行例を紹介します。

1. テーブルの作成

まず、サンプル用のテーブルを作成しましょう。

mysql> create table DemoTable
    -> (
    -> EmployeeName varchar(100)
    -> );
Query OK, 0 rows affected (0.81 sec)

2. レコードの挿入

INSERT コマンドを使って、テーブルに複数のレコードを挿入します。

mysql> insert into DemoTable values('Adam Smith');
Query OK, 1 row affected (0.12 sec)

mysql> insert into DemoTable values('Carol Taylor');
Query OK, 1 row affected (0.12 sec)

mysql> insert into DemoTable values('David Miller');
Query OK, 1 row affected (0.20 sec)

mysql> insert into DemoTable values('Chris Evan');
Query OK, 1 row affected (0.13 sec)

3. レコードの表示

SELECT ステートメントを使用して、テーブル内のすべてのレコードを確認します。

mysql> select *from DemoTable;

出力結果

上記のクエリを実行すると、次のような出力が得られます。

+--------------+
| EmployeeName |
+--------------+
| Adam Smith   |
| Carol Taylor |
| David Miller |
| Chris Evan   |
+--------------+
4 rows in set (0.00 sec)

4. 列の末尾の文字列を検索するクエリ

以下が、列の値の末尾部分を検索するためのクエリです。INSTR() 関数でスペースの位置を取得し、その位置から末尾までの文字列を RIGHT() 関数で抽出したうえで、LIKE 句によるパターン一致を行っています。

mysql> select *from DemoTable where Right(EmployeeName, InStr(EmployeeName, ' ' )) LIKE 'Mille%';

出力結果

このクエリを実行すると、次のような出力が得られます。

+--------------+
| EmployeeName |
+--------------+
| David Miller |
+--------------+
1 row in set (0.00 sec)

クエリの仕組み

このクエリの動作を簡単に整理すると、次のようになります。

  • InStr(EmployeeName, ' '): 氏名の中で最初にスペースが出現する位置(文字数)を返します。たとえば「David Miller」の場合は 6 が返ります。
  • Right(EmployeeName, 位置): 文字列の末尾から指定した文字数分を切り出します。「David Miller」なら「Miller」が抽出されます。
  • LIKE 'Mille%': 抽出した末尾の文字列が「Mille」で始まるレコードのみを絞り込みます。

このように、RIGHT()INSTR() を組み合わせれば、姓・名がスペースで区切られたデータから名前側だけを取り出して部分一致検索することができます。フルネームのデータから特定の名字や名前を検索したい場合などに応用できるテクニックです。

  1. MySQLで文字列内の特定の文字を検索する方法|REGEXPの使い方を解説

    MySQLで文字列内の特定の文字を検索するにはMySQLで文字列の中に特定の文字が含まれているかどうかを調べたい場合は、REGEXP(正規表現)を使用します。ここでは、「J」「A」「V」「A」という4文字が文字列内にこの順番で含まれているレコードを検索する例を紹介します。1. サンプルテーブルの作成まず、検索対象となるテーブルを作成します。mysql> create table DemoTable ( Value varchar(50) ); Query OK, 0 rows affected (3.92 sec)2. レコードの挿入INSERTコマンドを使って、テーブルにサンプ

  2. MySQLのREPLACE関数で列の値に含まれる文字列を一括置換する方法

    はじめにMySQLでは、UPDATE文とREPLACE()関数を組み合わせることで、テーブルの列に含まれる特定の文字列(特殊文字など)を簡単に一括置換できます。この記事では、実際のサンプルコードを使ってその手順をわかりやすく解説します。サンプルテーブルの作成まず、以下のコマンドでテーブルを作成します。mysql> create table DemoTable1574 -> ( -> StudentCode varchar(20) -> );Query OK, 0 rows affected (0.59 sec)レコードの挿入次に、INSERTコマンドを