MySQLで複数のパラメータ値を1つの列に挿入する方法
MySQLでは、CONCAT_WS() や CONCAT() 関数を使うことで、複数のパラメータ値を1つの列にまとめて挿入できます。ここでは、氏名・年齢・国名の3つの値を「-(ハイフン)」区切りで1つの列に格納する例を紹介します。
サンプルテーブルの作成
まず、以下のようにテーブルを作成します。
mysql> create table DemoTable
(
Name varchar(100),
Age int,
CountryName varchar(100),
PersonInformation text
);
Query OK, 0 rows affected (0.67 sec)CONCAT_WS()を使って複数の値を1つの列に挿入する
続いて、複数のパラメータ値を1つの列に挿入するクエリを見ていきましょう。使用するのは、MySQLのテーブルにレコードを挿入するときにおなじみのINSERT文です。ポイントは、PersonInformation列の値として concat_ws('-' , Name, Age, CountryName) を指定している点です。これにより、3つのカラムの値が「-」で連結されて1つの文字列として保存されます。
mysql> insert into DemoTable values('John',21,'US',concat_ws('-',Name,Age,CountryName));
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('Chris',22,'AUS',concat_ws('-',Name,Age,CountryName));
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('Bob',24,'UK',concat_ws('-',Name,Age,CountryName));
Query OK, 1 row affected (0.17 sec)補足: CONCAT_WS() の第1引数には区切り文字を指定し、第2引数以降に連結したい値を渡します。「WS」は「With Separator(区切り文字あり)」の略です。NULL値は自動的にスキップされるため、NULLが混在するデータでも扱いやすいのが特徴です。なお、区切り文字が不要な場合は CONCAT() 関数でも同様の処理が可能です。
結果の確認
SELECT文を実行して、テーブル内の全レコードを表示してみましょう。
mysql> select *from DemoTable;
実行すると、次のような出力が得られます。
+-------+------+-------------+-------------------+ | Name | Age | CountryName | PersonInformation | +-------+------+-------------+-------------------+ | John | 21 | US | John-21-US | | Chris | 22 | AUS | Chris-22-AUS | | Bob | 24 | UK | Bob-24-UK | +-------+------+-------------+-------------------+ 3 rows in set (0.00 sec)
このように、PersonInformation列に「John-21-US」「Chris-22-AUS」「Bob-24-UK」という形で、複数のパラメータ値が1つの列に正しく挿入されていることが確認できました。ログ情報や履歴データなど、複数の項目をまとめて1つのフィールドに保持したい場合に便利なテクニックなので、ぜひ活用してください。
-
JavaでMySQLテーブルに1つのカラムのみを挿入する方法
JavaとMySQLを連携させる際、テーブルの一部のカラムだけにデータを挿入したいケースはよくあります。その場合は、JDBCのINSERT INTOステートメントを使用します。挿入対象のカラム名を明示的に指定することで、他のカラムには影響を与えずに1つのカラムのみへ値を登録できます。この記事では、実際にテーブルを作成し、Javaのコードから「Name」という1つのカラムだけにデータを挿入する手順を解説します。1. 挿入先のテーブルを作成するまず、MySQLで以下のようにテーブルを作成しておきましょう。ここでは、varchar型の「Name」カラムを1つだけ持つシンプルなテーブルを用意します。m
-
MySQLで1つのINSERT文を使って列に複数の値を一括挿入する方法
はじめにMySQLでは、1つのINSERT文を繰り返し実行しなくても、単一のクエリだけで同じ列に複数の値を挿入できます。VALUES句の後ろに、挿入したい値をカンマ区切りのタプル(行)として列挙するだけです。この方法はデータベースへの接続回数を減らせるため、大量のデータを登録する際にパフォーマンス面でも大きなメリットがあります。基本構文複数の値を1つの列に挿入する場合の基本構文は以下のとおりです。INSERT INTO テーブル名 VALUES(値1),(値2),...,(値N);このように、各値を丸括弧で囲み、カンマ(,)で区切って並べることで、1回のクエリで複数行をまとめて挿入できます。実