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

MySQLのSELECT文で文字列を連結する方法|CONCAT()関数の使い方を解説

MySQLで文字列を連結するにはCONCAT()関数を使う

MySQLのSELECT文でカラムの値と文字列を連結したい場合は、CONCAT()関数を使用します。CONCAT()は引数として渡された複数の文字列やカラムの値を、指定した順序でそのまま結合してくれる便利な関数です。

基本的な構文

SELECT
CONCAT(カラム名1, '任意の連結文字列'),
CONCAT(カラム名2, '任意の連結文字列'),
....N
FROM テーブル名;

実際に試してみよう

構文の動きを理解するために、まずサンプル用のテーブルを作成します。

テーブルの作成

mysql> create table selectConcat
-> (
-> StudentId int,
-> StudentName varchar(100),
-> StudentAge int
-> );
Query OK, 0 rows affected (1.32 sec)

生徒ID・氏名・年齢を持つ「selectConcat」テーブルを作成しました。次に、INSERTコマンドでレコードを挿入していきます。

データの挿入

mysql> insert into selectConcat values(1,'Carol',23);
Query OK, 1 row affected (0.19 sec)

mysql> insert into selectConcat values(2,'John',24);
Query OK, 1 row affected (0.25 sec)

mysql> insert into selectConcat values(3,'Adam',25);
Query OK, 1 row affected (0.14 sec)

mysql> insert into selectConcat values(4,'Bob',21);
Query OK, 1 row affected (0.20 sec)

mysql> insert into selectConcat values(5,'Sam',22);
Query OK, 1 row affected (0.16 sec)

登録データの確認

SELECT文ですべてのレコードを表示してみましょう。

mysql> select *from selectConcat;

実行結果は以下の通りです。

+-----------+-------------+------------+
| StudentId | StudentName | StudentAge |
+-----------+-------------+------------+
| 1         | Carol       | 23         |
| 2         | John        | 24         |
| 3         | Adam        | 25         |
| 4         | Bob         | 21         |
| 5         | Sam         | 22         |
+-----------+-------------+------------+
5 rows in set (0.00 sec)

SELECT文でフィールドと文字列を連結する

それでは本題の、SELECT文内でカラムの値と文字列を連結してみます。StudentIdには「 as an Id(IDとして)」、StudentNameには「 as a Name(名前として)」という文字列をそれぞれ付けて出力します。

mysql> select concat(StudentId,' as an Id'),concat(StudentName,' as a Name') from selectConcat;

実行結果は以下の通りです。

+-------------------------------+----------------------------------+
| concat(StudentId,' as an Id') | concat(StudentName,' as a Name') |
+-------------------------------+----------------------------------+
| 1 as an Id                    | Carol as a Name                  |
| 2 as an Id                    | John as a Name                   |
| 3 as an Id                    | Adam as a Name                   |
| 4 as an Id                    | Bob as a Name                    |
| 5 as an Id                    | Sam as a Name                    |
+-------------------------------+----------------------------------+
5 rows in set (0.00 sec)

このように、各カラムの値の後ろに指定した文字列が連結されて表示されていることが確認できます。

補足:CONCAT()関数を使う際の注意点

  • NULLの扱いに注意:CONCAT()に渡した引数のうち1つでもNULLが含まれていると、結果全体がNULLになります。NULLを無視して連結したい場合は、IFNULL()やCOALESCE()と組み合わせるか、区切り文字付きで連結できるCONCAT_WS()関数を利用するとよいでしょう。
  • 数値型も連結可能:上記の例のように、INT型などの数値カラムも自動的に文字列として扱われ、問題なく連結できます。
  • AS句で別名を付ける:出力時のカラム名を見やすくしたい場合は、「CONCAT(...) AS 表示名」のようにエイリアスを指定すると可読性が向上します。

CONCAT()関数を活用すれば、氏名の姓と名の結合や、住所データの整形など、さまざまな場面で柔軟なデータ表示が可能になります。ぜひ実際の開発でも活用してみてください。

  1. 特殊文字を含む特定の文字列を選択するためのMySQLクエリ

    データベースの検索では、アポストロフィ()などの特殊文字が含まれる文字列を扱いたい場面があります。本記事では、REPLACE関数を活用して、特殊文字を含むレコードを柔軟に抽出するMySQLクエリの書き方を解説します。1. サンプルテーブルの作成まず、検索対象となるテーブルを作成します。mysql> create table DemoTable ( Title text ); Query OK, 0 rows affected (0.66 sec)2. テストデータの挿入次に、INSERT文を使ってアポストロフィを含むレコードと含まないレコードを挿入します。mysql> in

  2. MySQLでSELECTクエリを使用してデータを挿入(INSERT)する方法

    MySQLでは、INSERT文とSELECTクエリを組み合わせることで、テーブルにデータを挿入することができます。通常、SELECTは既存のテーブルからデータを取得するために使われますが、値を直接指定してINSERTを実行する際にも活用できる便利な手法です。基本構文SELECTクエリを使用してINSERTを実行する場合の構文は以下の通りです。insert into yourTableName(yourColumnName1,yourColumnName2,yourColumnName3,...N) select yourValue1,yourValue2,yourValue3,......N;