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

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()関数を併用すると便利です。

  1. MySQLの関数からテーブル(結果セット)を返す方法|ストアドプロシージャの使い方

    MySQL関数ではテーブルを返せない結論から言うと、MySQLの関数(FUNCTION)からテーブルや結果セットを返すことはできません。MySQLの関数が返せるのは、文字列、整数、CHAR型などのスカラー値に限られます。テーブル形式のデータ(複数行・複数列の結果セット)を返したい場合は、関数ではなくストアドプロシージャ(Stored Procedure)を使用しましょう。この記事では、実際にサンプルテーブルを作成し、ストアドプロシージャで結果セットを取得する手順を解説します。サンプルテーブルの作成まず、以下のようにCREATE TABLE文でテーブルを作成します。mysql> creat

  2. MySQLのテーブル名にアンダースコア(_)を使う方法:バッククォートの正しい使い方

    MySQLのテーブル名にアンダースコアは使える?MySQLでは、テーブル名にアンダースコア(_)を含めることができます。ただし、そのまま記述するとエラーになる場合があるため、テーブル名をバッククォート(`)で囲む必要があります。注意すべき点として、シングルクォート()で囲むことはできません。シングルクォートは文字列リテラルを表すため、構文エラーが発生します。失敗例:シングルクォートで囲んだ場合まず、アンダースコアを含むテーブル名をシングルクォートで囲んで作成してみましょう。以下がその例です。mysql> create table Demo_Table725( ClientId i