MySQL で 2つの列を連結する
この記事では、MySQL
の 2つの列のデータを連結するさまざまな方法を紹介します。このタスクは、MySQL
テーブルからフィールドを選択し、それらの値を連結した後、それらの値を 1つの変数に格納することにより、プログラムで簡単に実行できます。
データベーステーブルから行を選択するときに値を連結することにより、上記の手順を簡略化することができます。
簡単な例を見てみましょう。データベースに名と姓として 2つの別々の列があり、両方の列の値を 1つの文字列のフルネームとして表示する場合は、2つの方法のいずれかを使用してタスクを実行できます。同様に、住所がデータベース内の複数の列に分割されており、アプリケーションで都市、州、国を含む単一の住所として使用する場合は、CONCAT
関数が非常に便利です。
このタスクを実行するには、2つの異なる関数を使用できます。
CONCAT
機能を使用するCONCAT_WS
関数を使用する
CONCAT()
関数と CONCAT_WS()
関数はどちらも、2つ以上の文字列を連結します。これらの 2つの関数は、CONCAT_WS()
関数が文字列間の区切り文字とともに機能するのに対し、CONCAT()
関数では区切り文字を使用できないため、異なります。これらの関数には、引数のいずれかが NULL
の場合に CONCAT()
関数が NULL
値を返すという別の重要な違いがあります。対照的に、CONCAT_WS()
関数は、区切り文字が NULL
の場合にのみ NULL
値を返します。
次のスクリプトは、4つの列(sid
、firstname
、lastname
、および email
)を持つテーブル student
を作成します。
CREATE TABLE student (sid INT, firstname VARCHAR(20) NOT NULL, lastname VARCHAR(20) NOT NULL, email VARCHAR(55) NOT NULL);
ここでは、デモンストレーションのためにサンプルデータ値を student テーブルに挿入します。
INSERT INTO student
VALUES (111,'Sim','Marlw','sim.marlw@gmail.com'),
(124,'John','Carl','John.carl@gmail.com'),
(362,'Paul','cohelo','paul.coh@google.com'),
(244,'Lunas','sen','Lonas.sen@max.com');
INSERT INTO student
VALUES (114,'Jaine','Kora','jaine.kora@abs.com'),
(615,'Roma','Sholy','roma.sh11@yahoo.com'),
(997,'Beaon','shrlon','beatrice.ss22@yahoo.com'),
(332,'Peter','cohelo','peter.coh@google.com');
以下のクエリは、student テーブルからすべてのデータを返します。
SELECT * FROM student order by sid;
MySQL の CONCAT
関数を使用して列を連結する
CONCAT
関数は、複数の列の値を 1つの列に連結または結合できます。CONCAT
関数の構文は次のとおりです。
CONCAT(Column 1, column 2,......)
ここで、SELECT
クエリでこれを使用する方法を確認します。
SELECT sid, CONCAT(firstname, " ", lastname) AS fullname FROM student;
出力は次のようになります。
select
クエリを使用して、プロンプトにコンテンツを表示できます。MySQL の CONCAT_WS
関数を使用して列を連結する
CONCAT_WS
関数は、複数の列の値を 1つの列に連結または結合することもできます。列の値または文字列とともに区切り文字を追加する追加機能があります。この区切り文字は、コンマ(,)、ハイフン(-)、アンダースコア(_)、または(***)などの静的な文字列またはパターンにすることができます。CONCAT_WS
関数の構文は次のとおりです。
CONCAT_WS(SEPARATOR,Column 1, column 2,......)
ここで、SELECT
クエリでこれを使用する方法を確認します。
SELECT sid, CONCAT_WS( "_", firstname, lastname,"***" ) AS fullname FROM student;
出力は次のようになります。