勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ

MySQLで苗字(姓)と名前(名)のカラムを結合させ検索する方法

   2026/10/02  MySQL / MariaDB データベース

MySQLで名字(姓)と名前(名)をそれぞれ別カラムに格納しているデータベースがあり、そこから「フルネームで完全一致検索」もしくは「名字 or 名前でのあいまい検索」を行いたかった。調べたところCONCATを用いることで各種検索が行えるみたい。以下に対応方法をメモ。

 

テーブル構造とデータ内容

mysql> SHOW COLUMNS FROM `test_table`;
+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| id         | int          | NO   | PRI | NULL    | auto_increment |
| last_name  | varchar(255) | NO   |     | NULL    |                |
| first_name | varchar(255) | NO   |     | NULL    |                |
+------------+--------------+------+-----+---------+----------------+

mysql> SELECT * FROM `test_table`;
+----+-----------+------------+
| id | last_name | first_name |
+----+-----------+------------+
|  1 | 山田      | 太郎       |
|  2 | 鈴木      | 次郎       |
|  3 | 佐々木    | 三郎       |
+----+-----------+------------+

 

対応方法

フルネームでの完全一致検索

SELECT * 
FROM `test_table` 
WHERE CONCAT(`last_name`, `first_name`) = '山田太郎';

+----+-----------+------------+
| id | last_name | first_name |
+----+-----------+------------+
|  1 | 山田      | 太郎       |
+----+-----------+------------+

名字 or 名前でのあいまい検索

SELECT * 
FROM `test_table` 
WHERE CONCAT(`last_name`, `first_name`) LIKE '%太郎%';

+----+-----------+------------+
| id | last_name | first_name |
+----+-----------+------------+
|  1 | 山田      | 太郎       |
+----+-----------+------------+

 

リファレンス

CONCAT

https://dev.mysql.com/doc/refman/8.0/ja/string-functions.html#function_concat

 - MySQL / MariaDB データベース

  関連記事

MySQLで指定したカラムの最頻値を抽出する方法
MySQLで指定したカラムの最頻値を抽出する方法

MySQLで指定したカラムの最頻値(全データの中で最も多く出現する値)を抽出した ...

PHPでmysqli関数使用時のプリペアドステートメントの利用方法
PHPでmysqli関数使用時のプリペアドステートメントの利用方法

PHPでMySQLを扱う際はmysqli関数を、エスケープの際はreal_esc ...

MySQLで一連の処理を関数のように実行できるストアドプロシージャの設定と利用方法
MySQLで一連の処理を関数のように実行できるストアドプロシージャの設定と利用方法

MySQL関連のサイトを見ていた際にストアドプロシージャが云々というページがあっ ...

MySQLでホスト指定しても正常に接続できない場合
MySQLでホスト指定しても正常に接続できない場合

MySQL自体は動いており、ユーザーも登録されているのに、ホスト名を指定しても正 ...

エックスサーバーでMySQLのサイズに注意
エックスサーバーでMySQLのサイズに注意

エックスサーバーで自動更新のログをMySQLに保存するようなシステムを動かしてい ...