MySQL で 2つの列を連結する

Sweety Rupani 2024年2月15日
  1. MySQL の CONCAT 関数を使用して列を連結する
  2. MySQL の CONCAT_WS 関数を使用して列を連結する
MySQL で 2つの列を連結する

この記事では、MySQL の 2つの列のデータを連結するさまざまな方法を紹介します。このタスクは、MySQL テーブルからフィールドを選択し、それらの値を連結した後、それらの値を 1つの変数に格納することにより、プログラムで簡単に実行できます。

データベーステーブルから行を選択するときに値を連結することにより、上記の手順を簡略化することができます。

簡単な例を見てみましょう。データベースに名と姓として 2つの別々の列があり、両方の列の値を 1つの文字列のフルネームとして表示する場合は、2つの方法のいずれかを使用してタスクを実行できます。同様に、住所がデータベース内の複数の列に分割されており、アプリケーションで都市、州、国を含む単一の住所として使用する場合は、CONCAT 関数が非常に便利です。

このタスクを実行するには、2つの異なる関数を使用できます。

  1. CONCAT 機能を使用する
  2. CONCAT_WS 関数を使用する

CONCAT() 関数と CONCAT_WS() 関数はどちらも、2つ以上の文字列を連結します。これらの 2つの関数は、CONCAT_WS() 関数が文字列間の区切り文字とともに機能するのに対し、CONCAT() 関数では区切り文字を使用できないため、異なります。これらの関数には、引数のいずれかが NULL の場合に CONCAT() 関数が NULL 値を返すという別の重要な違いがあります。対照的に、CONCAT_WS() 関数は、区切り文字が NULL の場合にのみ NULL 値を返します。

次のスクリプトは、4つの列(sidfirstnamelastname、および 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 の 2つの列を連結します-例

MySQL の CONCAT 関数を使用して列を連結する

CONCAT 関数は、複数の列の値を 1つの列に連結または結合できます。CONCAT 関数の構文は次のとおりです。

CONCAT(Column 1, column 2,......)

ここで、SELECT クエリでこれを使用する方法を確認します。

SELECT sid, CONCAT(firstname, " ", lastname) AS fullname FROM student;

出力は次のようになります。

mysql の 2つの列を連結します-concat を使用する

元のテーブルは更新されません。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;

出力は次のようになります。

mysql の 2つの列を連結します-concat_ws を使用する