MySQLのCONCAT()関数で複数列の値を1つの列に結合する方法
MySQLのCONCAT()関数を使うと、2つ以上の列の値を組み合わせて、1つの文字列として表示することができます。この場合、CONCAT()関数の引数には、結合したい列の名前を指定します。
CONCAT()関数で列を結合する基本構文
基本的な構文は以下の通りです。
SELECT CONCAT(列名1, 列名2, ...) FROM テーブル名;
引数の間に区切り文字(カンマやスペースなど)を挟むことで、見やすい形式で値を連結できる点もポイントです。
具体例:StudentテーブルでID・名前・住所を結合する
例えば、「Student」というテーブルがあり、学生のID・名前・住所をまとめて1つの列に表示したい場合を考えてみましょう。このような場合は、次のようなクエリを書くことができます。
mysql> SELECT Id, Name, Address, CONCAT(ID, ', ', Name, ', ', Address) AS 'ID, 名前, 住所' FROM Student; +------+---------+---------+--------------------+ | Id | Name | Address | ID, 名前, 住所 | +------+---------+---------+--------------------+ | 1 | Gaurav | Delhi | 1, Gaurav, Delhi | | 2 | Aarav | Mumbai | 2, Aarav, Mumbai | | 15 | Harshit | Delhi | 15, Harshit, Delhi | | 20 | Gaurav | Jaipur | 20, Gaurav, Jaipur | +------+---------+---------+--------------------+ 4 rows in set (0.00 sec)
上記の結果から分かるように、AS句を使うことで、結合後の列に「ID, 名前, 住所」という別名(エイリアス)を付けています。また、各引数の間に「', '」という区切り文字を挿入することで、値が読みやすい形式で連結されます。
補足:NULL値の扱いに注意
CONCAT()関数では、引数のいずれかにNULLが含まれている場合、結果全体がNULLになってしまう点に注意が必要です。NULLを空文字列として扱いたい場合は、CONCAT_WS()関数やIFNULL()関数を併用すると便利です。
-
MySQLの関数からテーブル(結果セット)を返す方法|ストアドプロシージャの使い方
MySQL関数ではテーブルを返せない結論から言うと、MySQLの関数(FUNCTION)からテーブルや結果セットを返すことはできません。MySQLの関数が返せるのは、文字列、整数、CHAR型などのスカラー値に限られます。テーブル形式のデータ(複数行・複数列の結果セット)を返したい場合は、関数ではなくストアドプロシージャ(Stored Procedure)を使用しましょう。この記事では、実際にサンプルテーブルを作成し、ストアドプロシージャで結果セットを取得する手順を解説します。サンプルテーブルの作成まず、以下のようにCREATE TABLE文でテーブルを作成します。mysql> creat
-
MySQLのテーブル名にアンダースコア(_)を使う方法:バッククォートの正しい使い方
MySQLのテーブル名にアンダースコアは使える?MySQLでは、テーブル名にアンダースコア(_)を含めることができます。ただし、そのまま記述するとエラーになる場合があるため、テーブル名をバッククォート(`)で囲む必要があります。注意すべき点として、シングルクォート()で囲むことはできません。シングルクォートは文字列リテラルを表すため、構文エラーが発生します。失敗例:シングルクォートで囲んだ場合まず、アンダースコアを含むテーブル名をシングルクォートで囲んで作成してみましょう。以下がその例です。mysql> create table Demo_Table725( ClientId i