14
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【DB2】SQLを用いた文字列結合の基本について解説

14
Last updated at Posted at 2018-11-24

はじめに

SELECT文でデータを取得する際に、取得した値を加工して出力したい場合があると思います。

例えば次のようなTABLE(テーブル名:personal_information)からデータを取得する際に、

ID LASTNAME ADDRESS AGE
11111 鈴木 静岡 22
22222 加藤 愛知 23
33333 佐藤 山形 36
44444 田中 京都 26
  1. 鈴木, 加藤ではなく、鈴木さん, 加藤さん「さん」付けで出力 する
  2. 11111,鈴木,静岡,22のように複数のカラムをカンマで結合して1つの文字列として出力する

という要求を実現する場合、文字列連結を用いることになります。

今回はこの文字列連結の方法について以下に解説していきます。

実現方法

今回はDB2を使用します

「さん」付けで出力したい場合

まず「さん」付けで出力する方法について解説します。

今回のように取り出すカラムに文字列を追加したい場合はCONCAT関数を使用します。

CONCAT関数

CONCAT関数は2つの文字列を連結する関数で、次のように使用します。

SQL
SELECT CONCAT(LASTNAME,'さん') AS name FROM personal_information

このクエリを実行すると次のような結果が表示されます。

検索結果(イメージ)
name
------------
鈴木さん
加藤さん
佐藤さん
田中さん

これで無事、TABLEに存在する苗字に「さん」をつけて取り出すことができます。

複数のカラムをカンマで結合して1つの文字列として出力したい場合

複数のカラムをカンマで結合して1つの文字列として出力する方法について説明します。

「さん」付けで出力する方法と同様に文字列連結を用いれば実現できるのですが、DB2のCONCAT関数は3つ以上の文字列を連結することができません。

MySQLやPostgresqlでは3つ以上の文字列連結が可能です

一応、CONCAT関数を入れ子にする形で記載すれば実行可能ですが、CONCAT関数以外で複数の文字列を連結をする場合には||演算子を使用します。

||演算子

||演算子は複数の文字列を連結することができ、次のように使用します。

SQL
SELECT ID || ',' || LASTNAME || ',' || ADDRESS || ',' || AGE AS personal_info FROM personal_information WHERE ID = 11111

このクエリを実行すると次のような結果が表示されます。

検索結果(イメージ)
personal_info
------------
11111,鈴木,静岡,22

上記の結果のように、カラムが1つにまとまり、カンマが結合した状態で出力されました。

注意点

DB2の||演算子NULL値を含む文字列を連結すると、結果がNULLになるという仕様があります。
その場合の対処方法はこちらの記事を参考にしてください。

参考サイト

14
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?