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

MySQLで区切り文字としてカンマを使用して1つの列を2列に分割する方法

MySQLで区切り文字(カンマ)を使って1つの列を2列に分割したい場合、SUBSTRING_INDEX() 関数を使用すると簡単に実現できます。SUBSTRING_INDEX() は、指定した区切り文字の出現位置を基準に、文字列の左側または右側の部分を抽出できる便利な関数です。

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

テーブルの作成例

mysql> create table demo79
    -> (
    -> fullname varchar(50)
    -> );
Query OK, 0 rows affected (0.64 sec)

次に、INSERTコマンドを使ってテーブルにレコードを挿入します。「姓,名」の形式でカンマ区切りのフルネームを登録していきます。

レコードの挿入例

mysql> insert into demo79 values("John,Smith");
Query OK, 1 row affected (0.09 sec)

mysql> insert into demo79 values("David,Miller");
Query OK, 1 row affected (0.11 sec)

mysql> insert into demo79 values("Chris,Brown");
Query OK, 1 row affected (0.07 sec)

SELECT文を使って、テーブル内のレコードを表示してみましょう。

SELECT文の実行例

mysql> select *from demo79;

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

出力結果

+--------------+
| fullname     |
+--------------+
| John,Smith   |
| David,Miller |
| Chris,Brown  |
+--------------+
3 rows in set (0.00 sec)

それでは、カンマを区切り文字として1つの列を「First_Name(名)」と「Last_Name(姓)」の2列に分割するクエリを見ていきましょう。

列を2列に分割するクエリ

mysql> select
    -> fullname,
    -> substring_index(fullname, ',', 1) First_Name,
    -> substring_index(fullname, ',', -1) Last_Name
    -> from demo79;

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

出力結果

+--------------+------------+-----------+
| fullname     | First_Name | Last_Name |
+--------------+------------+-----------+
| John,Smith   | John       | Smith     |
| David,Miller | David      | Miller    |
| Chris,Brown  | Chris      | Brown     |
+--------------+------------+-----------+
3 rows in set (0.00 sec)

SUBSTRING_INDEX() の仕組み

SUBSTRING_INDEX(対象文字列, 区切り文字, 個数) の形式で使用します。第3引数に正の数を指定した場合は、区切り文字より左側の文字列を返します。一方、負の数を指定した場合は、区切り文字より右側の文字列を返します。

上記の例では、「substring_index(fullname, ',', 1)」で最初のカンマより左側(ファーストネーム)を取得し、「substring_index(fullname, ',', -1)」で最後のカンマより右側(ラストネーム)を取得しています。このようにSUBSTRING_INDEX()を活用すれば、カンマ区切りのデータを簡単に複数の列へ分割することができます。

  1. MySQLで列(カラム)を分割する方法!SUBSTRING_INDEX関数の使い方を徹底解説

    MySQLで列を分割するには?SUBSTRING_INDEX関数の基本MySQLで1つの列に格納された文字列を区切り文字で分割したい場合、SUBSTRING_INDEX()関数を使用します。この記事では、アンダースコア(_)で区切られた氏名データを分割する具体例を通じて、その使い方をわかりやすく解説します。1. サンプルテーブルの作成まず、以下のコマンドでテーブルを作成します。mysql> create table DemoTable -> ( -> Name varchar(40) -> );Query OK, 0 rows affected (1.

  2. MySQLでfloat値を2つの列に分割する方法(SUBSTRING_INDEXとCASTを活用)

    MySQLでは、float型の値を2つの列に分割することが可能です。1つ目の列には小数点より前の整数部分を、2つ目の列には小数点より後の小数部分を格納します。この処理を実現するには、SUBSTRING_INDEX() 関数と CAST() 関数を組み合わせて使用します。この記事では、実際のサンプルコードを通じて、float値を整数部分と小数部分に分割する手順をわかりやすく解説します。1. サンプルテーブルの作成まず、テーブルを作成します。ここでは、float値を文字列として格納する Value1 列を持つテーブルを用意します。mysql> create table DemoTable19