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

MySQLのSELECT句でテキスト値を追加・連結する方法(CONCAT関数の使い方)

MySQLでは、SELECT句の中でテキスト値を追加・連結したい場合、CONCAT()関数を使用します。CONCAT()は引数として渡された複数の文字列やカラムの値を1つの文字列に結合して返す関数です。

この記事では、実際にテーブルを作成し、SELECT句内でCONCAT()を使って文字列を連結する手順を解説します。

1. サンプルテーブルの作成

まず、ユーザー情報を格納するテーブルを作成します。

mysql> create table ConcatenatingDemo
-> (
-> UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> UserName varchar(20),
-> UserCountryName varchar(20)
-> );
Query OK, 0 rows affected (0.82 sec)

UserIdを主キーとし、自動採番(AUTO_INCREMENT)を設定したシンプルなテーブルです。

2. テーブルへのレコード挿入

次に、INSERTコマンドを使ってレコードを挿入します。

mysql> insert into ConcatenatingDemo(UserName,UserCountryName) values('John','US');
Query OK, 1 row affected (0.14 sec)
mysql> insert into ConcatenatingDemo(UserName,UserCountryName) values('Carol','UK');
Query OK, 1 row affected (0.13 sec)
mysql> insert into ConcatenatingDemo(UserName,UserCountryName) values('Bob','AUS');
Query OK, 1 row affected (0.15 sec)
mysql> insert into ConcatenatingDemo(UserName,UserCountryName) values('David','US');
Query OK, 1 row affected (0.29 sec)

3. 挿入したデータの確認

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

mysql> select *from ConcatenatingDemo;

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

+--------+----------+-----------------+
| UserId | UserName | UserCountryName |
+--------+----------+-----------------+
| 1 | John | US |
| 2 | Carol | UK |
| 3 | Bob | AUS |
| 4 | David | US |
+--------+----------+-----------------+
4 rows in set (0.00 sec)

4. SELECT句内でCONCAT()を使って文字列を連結する

ここからが本題です。SELECT句内でCONCAT()関数を使い、ユーザー名と国名を任意のテキストと組み合わせて表示してみます。

mysql> select concat(UserName,' belongs to ( ',UserCountryName,' )') as AddingTextDemo from ConcatenatingDemo;

実行結果:

+-------------------------+
| AddingTextDemo |
+-------------------------+
| John belongs to ( US ) |
| Carol belongs to ( UK ) |
| Bob belongs to ( AUS ) |
| David belongs to ( US ) |
+-------------------------+
4 rows in set (0.00 sec)

このように、カラムの値と固定のテキスト(「 belongs to ( 」「 )」など)を自由に組み合わせて、1つの整形された文字列として取得できます。AS句で別名(AddingTextDemo)を付けることで、結果セットの列名も分かりやすくなります。

補足:CONCAT()使用時の注意点

  • NULLの扱いに注意: CONCAT()に渡した引数のうち1つでもNULLが含まれていると、結果全体がNULLになります。NULLが含まれる可能性がある場合は、IFNULL()やCOALESCE()と組み合わせて対処すると安全です。
  • 区切り文字を挟む場合: 各要素の間に決まった区切り文字を入れたいときは、CONCAT_WS()関数を使うとより簡潔に記述できます。例:CONCAT_WS('-', UserName, UserCountryName)

以上のように、CONCAT()関数を使えばSELECT句内で簡単にテキストの追加・連結が行えます。レポート出力や表示用データの整形など、さまざまな場面で活用できる便利な機能なので、ぜひ覚えておきましょう。

  1. 【MySQL】単一クエリでUNION SELECTとIN句を組み合わせる方法

    はじめにMySQLでは、UNION SELECTとIN句を単一のクエリ内で組み合わせることができます。これにより、複数のテーブルのデータを統合した上で、特定の条件に一致するレコードだけを効率的に抽出できます。本記事では、2つのテーブルを作成し、サブクエリとUNIONを活用して目的のデータを取得する手順を具体例とともに解説します。最初のテーブルを作成するまず、以下のコマンドでテーブル「DemoTable1」を作成します。mysql> create table DemoTable1 -> ( -> StudentId int, -> StudentN

  2. MySQLでテーブルに存在しない値だけを抽出する方法(UNION ALLとNOT EXISTSの活用)

    MySQLでテーブルに存在しない値を照会するには? MySQLで「テーブルにまだ登録されていない値だけ」を取得したい場合、UNION ALLとWHERE NOT EXISTSを組み合わせるのが有効です。サブクエリで候補となる値をUNION ALLで列挙し、NOT EXISTSによって既にテーブル内に存在する値を除外することで、存在しない値のみを抽出できます。 ここでは、実際の手順をサンプルコードとともに解説します。 1. サンプルテーブルを作成する まず、自動採番(AUTO_INCREMENT)のカラムを持つテーブルを作成します。 mysql> create table DemoTab