MySQLで2つの列を連結する方法:CONCAT()関数の使い方を解説
MySQLで列を連結する基本
MySQLで2つの列の値を1つに連結したい場合は、CONCAT()関数を使用します。氏名と年齢のように、別々の列に保存されているデータを組み合わせて表示したい場面は多くあります。CONCAT()関数を使えば、SQLクエリだけで簡単に実現できます。
CONCAT()関数の構文
基本的な構文は以下のとおりです。
SELECT CONCAT(カラム名1, ' ', カラム名2) AS 任意の別名 FROM テーブル名;
第2引数の ' '(スペース)を挟むことで、連結した値の間に空白を挿入できます。区切り文字は自由に指定可能です。
サンプルテーブルの作成
実際に動作を確認するため、まずテーブルを作成しましょう。
mysql> CREATE TABLE concatenateTwoColumnsDemo
-> (
-> StudentId int,
-> StudentName varchar(200),
-> StudentAge int
-> );
Query OK, 0 rows affected (1.06 sec)
次に、サンプルデータを挿入します。
mysql> INSERT INTO concatenateTwoColumnsDemo VALUES(1,'Sam',21); Query OK, 1 row affected (0.18 sec) mysql> INSERT INTO concatenateTwoColumnsDemo VALUES(2,'David',24); Query OK, 1 row affected (0.17 sec) mysql> INSERT INTO concatenateTwoColumnsDemo VALUES(3,'Carol',22); Query OK, 1 row affected (0.13 sec) mysql> INSERT INTO concatenateTwoColumnsDemo VALUES(4,'Johnson',19); Query OK, 1 row affected (0.17 sec)
登録データの確認
SELECT文ですべてのレコードを表示して確認します。
mysql> SELECT * FROM concatenateTwoColumnsDemo;
実行結果は以下のとおりです。
+-----------+-------------+------------+ | StudentId | StudentName | StudentAge | +-----------+-------------+------------+ | 1 | Sam | 21 | | 2 | David | 24 | | 3 | Carol | 22 | | 4 | Johnson | 19 | +-----------+-------------+------------+ 4 rows in set (0.00 sec)
CONCAT()関数で2つの列を連結する
それでは、「StudentName」列と「StudentAge」列を連結してみましょう。名前と年齢の間にはスペースを挿入します。
mysql> SELECT CONCAT(StudentName, ' ', StudentAge) AS NameAndAgeColumn FROM concatenateTwoColumnsDemo;
実行結果は以下のとおりです。
+------------------+ | NameAndAgeColumn | +------------------+ | Sam 21 | | David 24 | | Carol 22 | | Johnson 19 | +------------------+ 4 rows in set (0.00 sec)
補足:NULL値に注意しよう
CONCAT()関数を使う際の注意点として、引数のいずれかにNULLが含まれると、結果全体がNULLになるという特性があります。NULLが含まれる可能性がある列を扱う場合は、IFNULL()やCOALESCE()と組み合わせると安全です。
SELECT CONCAT(IFNULL(StudentName, ''), ' ', IFNULL(StudentAge, '')) AS NameAndAgeColumn FROM concatenateTwoColumnsDemo;
また、区切り文字を自動的に挿入したい場合は、CONCAT_WS()関数(WS = With Separator)も便利です。第一引数に区切り文字を指定するだけで、複数の列をまとめて連結できます。
SELECT CONCAT_WS(' ', StudentName, StudentAge) AS NameAndAgeColumn
FROM concatenateTwoColumnsDemo;
このように、CONCAT()関数を活用すれば、MySQLで複数の列を柔軟に連結し、読みやすい形式でデータを出力できます。
-
MySQLでNULLを含む列同士を連結する方法:IFNULL()を使った安全な文字列結合
MySQLでNULL値を含む列を連結するには? MySQLで複数の列を連結する際、対象の列にNULLが含まれていると、CONCAT()関数の結果全体がNULLになってしまうという問題があります。これを回避するためには、IFNULL()関数を活用するのが効果的です。 この記事では、実際にテーブルを作成し、NULLを含むデータを連結する手順を具体的な例とともに解説します。 1. サンプルテーブルを作成する まず、学生の名前(姓・名)を格納するテーブルを作成しましょう。 mysql> create table DemoTable1793 ( StudentFirstName
-
MySQLの1つのUPDATE文で2つの列を同時に更新する方法
はじめにMySQLでは、1つのUPDATE文の中でSET句を一度だけ使えば、複数の列を同時に更新できます。各列の指定はカンマ(,)で区切って記述します。この記事では、実際にテーブルを作成し、1つのクエリで2つの列(FirstNameとLastName)を更新する手順を解説します。サンプルテーブルの作成まず、以下のようにCREATE TABLE文でテーブルを作成します。mysql> create table DemoTable1909 ( Id int NOT NULL, FirstName varchar(20), LastName varchar(20)