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句内で簡単にテキストの追加・連結が行えます。レポート出力や表示用データの整形など、さまざまな場面で活用できる便利な機能なので、ぜひ覚えておきましょう。
-
【MySQL】単一クエリでUNION SELECTとIN句を組み合わせる方法
はじめにMySQLでは、UNION SELECTとIN句を単一のクエリ内で組み合わせることができます。これにより、複数のテーブルのデータを統合した上で、特定の条件に一致するレコードだけを効率的に抽出できます。本記事では、2つのテーブルを作成し、サブクエリとUNIONを活用して目的のデータを取得する手順を具体例とともに解説します。最初のテーブルを作成するまず、以下のコマンドでテーブル「DemoTable1」を作成します。mysql> create table DemoTable1 -> ( -> StudentId int, -> StudentN
-
MySQLでテーブルに存在しない値だけを抽出する方法(UNION ALLとNOT EXISTSの活用)
MySQLでテーブルに存在しない値を照会するには? MySQLで「テーブルにまだ登録されていない値だけ」を取得したい場合、UNION ALLとWHERE NOT EXISTSを組み合わせるのが有効です。サブクエリで候補となる値をUNION ALLで列挙し、NOT EXISTSによって既にテーブル内に存在する値を除外することで、存在しない値のみを抽出できます。 ここでは、実際の手順をサンプルコードとともに解説します。 1. サンプルテーブルを作成する まず、自動採番(AUTO_INCREMENT)のカラムを持つテーブルを作成します。 mysql> create table DemoTab