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

MySQLで1つの列に格納された氏名を姓と名の2つの新しい列に分割する方法


MySQLでは、SUBSTRING_INDEX() 関数と REPLACE() 関数を組み合わせることで、1つの列に格納された氏名を「名前(FirstName)」と「姓(LastName)」の2つの新しい列に分割できます。ここでは、実際にテーブルを作成しながら手順を確認していきましょう。

1. テーブルを作成する

まず、氏名を格納するためのテーブルを作成します。

mysql> create table DemoTable (Name varchar(100));
Query OK, 0 rows affected (0.53 sec)

2. レコードを挿入する

続いて、INSERTコマンドでサンプルデータを挿入します。ここでは、名前と姓を含む文字列を登録しています。

mysql> insert into DemoTable values('Chris | Bob Brown');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('Carol | Robert Taylor');
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable values('Sam | David Miller');
Query OK, 1 row affected (0.13 sec)

3. テーブルの内容を確認する

SELECT文ですべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

実行すると、次のような結果が出力されます。

+-----------------------+
| Name                  |
+-----------------------+
| Chris | Bob Brown     |
| Carol | Robert Taylor |
| Sam   | David Miller |
+-----------------------+
3 rows in set (0.00 sec)

4. 氏名を2つの列に分割するクエリ

以下のクエリを実行すると、Name列の値を「FirstName」と「LastName」の2つの新しい列に分割して取得できます。

mysql> SELECT REPLACE(Name, SUBSTRING_INDEX(Name, ' ', -1),'')
    AS FirstName, SUBSTRING_INDEX(Name, ' ', -1) AS LastName from DemoTable;

実行結果は次のとおりです。

+-----------------+----------+
| FirstName       | LastName |
+-----------------+----------+
| Chris | Bob     | Brown    |
| Carol | Robert  | Taylor   |
| Sam   | David   | Miller   |
+-----------------+----------+
3 rows in set (0.00 sec)

クエリの仕組み

このクエリは、次の2つの関数を組み合わせて動作しています。

  • SUBSTRING_INDEX(Name, ' ', -1):文字列を半角スペースで区切ったときの、末尾から1番目の要素(つまり姓)を取得します。
  • REPLACE(Name, 姓, ''):元の文字列から取得した姓を空文字に置き換えることで、残りの部分(名前に相当する部分)を取り出します。

なお、上記の方法はSELECT時に表示を分割するテクニックです。テーブル自体に物理的な新しい列として保存したい場合は、ALTER TABLE でFirstName列とLastName列を追加したうえで、このクエリの結果を使ってUPDATE文を実行するとよいでしょう。

  1. Excelで氏名を姓・名・ミドルネームに分割する2つの方法

    ```html 顧客リストや名簿など、フルネームがひとつのセルにまとめて入力されたデータを扱うことは少なくありません。こうした名前を「名(ファーストネーム)」「ミドルネーム」「姓(ラストネーム)」の3つに分割できれば、並べ替えや絞り込み、集計作業が格段にしやすくなります。Microsoft Excelでは、区切り位置(Delimiter/Separator)機能を使う方法と、数式を使う方法の2通りで氏名を分割できます。 Excelで姓と名を分ける方法 氏名を姓と名に分ける主な目的は、社員や学生などのグループを、姓または名を基準に分類・整理することです。Excelでは、次の2つの方法で対応できま

  2. 【Excel入門】氏名を姓と名に分ける方法|LEFT・RIGHT関数と「区切り位置」機能の使い方

    Excelで名簿や顧客リストなどを管理していると、「1つのセルに入力された氏名を、姓と名の別々のセルに分けたい」という場面によく出会います。これはExcelで非常によくある悩みで、ネットを検索すれば他人が作成したマクロが大量に見つかるでしょう。 しかし、この記事では外部ツールに頼らず、数式を自分で組み立てて、仕組みをきちんと理解しながら氏名を分割する方法をご紹介します。Excelを頻繁に使うなら、少し高度な関数を覚えておくことで、データ処理の幅がぐっと広がります。 「数式は苦手」「もっと手軽な方法がいい」という方は、この記事の後半で解説する「区切り位置」機能のセクションまで読み飛ばしてください