Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

MySQLのCONCATは文字列などを結合させる際にとても便利なコマンドです。SELECTステートメントを使用することができるのであれば、ぜひ覚えておきたい機能ですね。そこで今回の記事では、MySQLのCONCATの主な機能をご紹介しつつ、実際に使用する方法をハンズオンで体験していきましょう。

本記事の要点
  • MySQLのCONCATは、文字列やカラムを結合させるコマンド
  • MySQLを使ったCONCATのハンズオン

MySQL CONCATとは

MySQLのCONCATは、指定した文字列や数値、カラムなどを結合させて表示する機能を持っています。SELECTステートメントでは、複数のカラムに分かれたデータを分けて表示することしかできません。そこで、CONCATを使用することで1つのマスに指定した文字列や数値、カラムを結合させた結果を表示させることができるのです。

MySQL CONCATの構文を以下で見てみましょう。

文字列を結合させる場合のコマンド

SELECT CONCAT(‘文字列1’, ‘文字列2’, ‘文字列3’, ...);

文字列を結合させる場合のコマンド

SELECT CONCAT(数値1, 数値2, 数値3, ...);

カラムを結合させる場合のコマンド

SELECT CONCAT(カラム1, カラム2, カラム3, ...) FROM テーブル名;

基本的には、「SELECT CONCAT」の後に結合させたい文字列や数値、カラムを指定することで、指定したデータを結合させた結果が表示できます。

MySQL CONCATの注意点

結合させた際、指定した文字列やカラム内に「NULL」が含まれている場合には、結果が「NULL」となってしまいます。もし「NULL」を含む文字列・カラムをCONCATで結合させるのであれば、注意しておきましょう。

MySQL CONCATを使用した例

MySQL CONCATを使用した例を以下にご紹介していきましょう。

文字列・数値の結合

文字列・数値の結合を見ていきます。

CONCATを含むSELECTステートメント

SELECT CONCAT('このコラム', 'では', 'MySQLの', 'CONCATについて', '学びます。');

出力結果

+------------------------------------------------------------------------------------------+
| CONCAT('このコラム', 'では', 'MySQLの', 'CONCATについて', '学びます。')                  |
+------------------------------------------------------------------------------------------+
| このコラムではMySQLのCONCATについて学びます。                                            |
+------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

上記では、文字列を結合させることができました。次に数値の結合を試してみましょう。

CONCATを含むSELECTステートメント

SELECT CONCAT(1, 2, 3);

出力結果

+-----------------+
| CONCAT(1, 2, 3) |
+-----------------+
| 123             |
+-----------------+
1 row in set (0.00 sec)

結合させる際の文字列と数値の違いは、「’(シングルクォーテーション)」の有無です。文字列・数値の扱いに気をつけましょう。

カラム内のデータ結合

次にカラム内のデータ結合を見ていきます。

以下のようなテーブルがある前提で説明を進めます。

animalsテーブル

+---------+-------+------+
| animal  | name  | age  |
+---------+-------+------+
| cat     | Tom   |    5 |
| dog     | Pochi |    8 |
| tiger   | Shima |   10 |
| bird    | Piyo  |    9 |
| lion    | Gao   |   17 |
| hamster | Jiro  |    3 |
+---------+-------+------+

上記のテーブルのanimalカラムとnameカラムを結合させて出力してみましょう。

CONCATを含むSELECTステートメント

SELECT CONCAT(animal, name) FROM animals;

出力結果

+———————-+ | CONCAT(animal, name) | +———————-+ | catTom | | dogPochi | | tigerShima | | birdPiyo | | lionGao | | hamsterJiro | +———————-+ 6 rows in set (0.00 sec)

上記のように、CONCATを使えば別のカラムのデータ同士を結合させることも可能です。

【関連記事】
▶︎【初心者から一歩先へ】MySQLのWHERE BETWEEN句で範囲検索!
▶︎【テーブル編集】MySQLのALTER TABLEの使い方まとめ

MySQLでCONCATハンズオンにトライ

こちらでは、実際にMySQLというデータベースを使用してCONCATを使ってみましょう。

準備

まずはMySQLを使用するための準備をしていきます。

MySQLのインストール・接続

まだMySQLをインストールしていない場合は、インストールしましょう。

$ brew install mysql

MySQLのインストールが終了したら、接続します。

$ sudo mysql -u root -p

データベースの作成

次にデータベースをMySQL上に作成し、使用するデータベースを指定しましょう。

mysql> CREATE DATABASE potepan;
Query OK, 1 row affected (0.00 sec)

mysql> USE potepan;

これでMySQLを使用する準備は完了しました。

ベースとなるテーブルの作成

次にベースとなるテーブルを作成しましょう。

mysql> CREATE TABLE students(familyName VARCHAR(50), firstName VARCHAR(50), bornYear INT, bornMonth INT, bornDay INT);
Query OK, 0 rows affected (0.03 sec)
mysql> INSERT INTO students VALUES('Tanaka', 'Taro', 2007, 12, 20),('Hamano', 'Yoko', 2001, 01, 12),('Tada', 'Tsuyoshi', 2004, 05, 04),('Kotani', 'Saeko', 1996, 11, 28),('Rokuta', 'Hajime', 2010, 10, 23),('Sato', 'Yuka', 1993, 06, 18);
Query OK, 6 rows affected (0.01 sec)

テーブルの状態

mysql> SELECT * FROM students;
+------------+-----------+----------+-----------+---------+
| familyName | firstName | bornYear | bornMonth | bornDay |
+------------+-----------+----------+-----------+---------+
| Tanaka     | Taro      |     2007 |        12 |      20 |
| Hamano     | Yoko      |     2001 |         1 |      12 |
| Tada       | Tsuyoshi  |     2004 |         5 |       4 |
| Kotani     | Saeko     |     1996 |        11 |      28 |
| Rokuta     | Hajime    |     2010 |        10 |      23 |
| Sato       | Yuka      |     1993 |         6 |      18 |
+------------+-----------+----------+-----------+---------+
6 rows in set (0.00 sec)

MySQL CONCATで2つのカラムを結合

まずはCONCATを使って2つのカラムを結合させてみましょう。

CONCATを含むSELECTステートメント

mysql> SELECT CONCAT(familyName, firstName) FROM students;

出力結果

+-------------------------------+
| CONCAT(familyName, firstName) |
+-------------------------------+
| TanakaTaro                    |
| HamanoYoko                    |
| TadaTsuyoshi                  |
| KotaniSaeko                   |
| RokutaHajime                  |
| SatoYuka                      |
+-------------------------------+
6 rows in set (0.00 sec)

このように「familyName」カラムと「firstName」カラムを結合させることができました。

MySQL CONCATで3つのカラムを結合

次にCONCATを使って3つのカラムを結合させてみましょう。ただし今回は、カラムの間に文字列を挟んでみます。

CONCATを含むSELECTステートメント

mysql> SELECT CONCAT(bornYear, '-', bornMonth, '-', bornDay) FROM students;

出力結果

+------------------------------------------------+
| CONCAT(bornYear, '-', bornMonth, '-', bornDay) |
+------------------------------------------------+
| 2007-12-20                                     |
| 2001-1-12                                      |
| 2004-5-4                                       |
| 1996-11-28                                     |
| 2010-10-23                                     |
| 1993-6-18                                      |
+------------------------------------------------+
6 rows in set (0.01 sec)

3つのカラム「bornYear」「bornMonth」「bornDay」の間に「-(ハイフン)」を挟むことができました。

MySQL CONCATで3つのカラムを結合し、比較演算子を使って結果を抽出

先ほどの応用で「bornYear」「bornMonth」「bornDay」を結合させ、比較演算子の使用でさらに結果を抽出してみましょう。

CONCATを含むSELECTステートメント

mysql> SELECT * FROM students WHERE CONCAT(bornYear, bornMonth, bornDay) > 20050101;

出力結果

+------------+-----------+----------+-----------+---------+
| familyName | firstName | bornYear | bornMonth | bornDay |
+------------+-----------+----------+-----------+---------+
| Tanaka     | Taro      |     2007 |        12 |      20 |
| Rokuta     | Hajime    |     2010 |        10 |      23 |
+------------+-----------+----------+-----------+---------+
2 rows in set (0.01 sec)

上記のSELECTステートメントでは、「bornYear」「bornMonth」「bornDay」を結合させた結果が「20050101」より大きい数値のレコードのみを抽出しました。

CONCATはWHEREのあとの条件などでも使用することができるということを覚えておきましょう。

まとめ

今回の記事では、MySQL CONCATの主な機能をご紹介しつつ、実際に使用する方法をハンズオンで体験していきました。使ってみると非常に簡単なCONCATですが、2つのカラムを結合させたい時などにとても便利です。ぜひ、活用していきましょう。

【関連記事】
▶︎MySQLのcreate tableサンプルコード集 カラム定義を自動出力する方法は?
▶︎MySQL初心者にマスターしてほしいコマンドラインからの使用方法

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。