SELECT文でデータを表示する際にカラムAとBを結合させて出したい時があります。
わかりやすく例えるならば、タイトルが「魔女の宅急便」サブタイトルが「キキ初めての配達」だとしてSELECT文で表示させる時は「魔女の宅急便 ~キキ初めての配達~」としたい時です。
そんな時の書き方について学んでいきたいと思います。
動作環境
SQL FIDDLEでMySQL5.6、PostgreSQL9.6で動作確認しています。
準備
以下のテーブルを使用し解説します。
itemid | tittle | episode |
---|---|---|
1 | アンナチュラル | 第1話 |
2 | アンナチュラル | 第2話 |
3 | アンナチュラル | 第3話 |
4 | アンナチュラル | (null) |
テーブルを作成するコードです。
— CREATE文
CREATE TABLE item (
ItemID numeric(8, 0) unique not null,
Tittle character varying (20) not null,
episode character varying (20),
primary key(ItemID)
);
— INSERT文
insert into item
values(0001, ‘アンナチュラル’, ‘第1話’),
(0002, ‘アンナチュラル’, ‘第2話’),
(0003, ‘アンナチュラル’, ‘第3話’),
(0004, ‘アンナチュラル’, null)
それでは文字列の結合をしてみましょう。
「 || 」を使って文字結合
「 || 」を使って文字を結合してみます。
SELECT
Tittle || episode as タイトル
FROM
item
■ 結果
タイトル |
---|
アンナチュラル第1話 |
アンナチュラル第2話 |
アンナチュラル第3話 |
(null) |
※ 連結要素にNullが含まれる場合、表示結果はnull になります。
「 || 」を使って文字結合(間にスペース)
上記方法だと間にスペースがなく少し窮屈なのでスペースを入れようと思います。
SELECT
Tittle || ‘ ‘ || episode as タイトル
FROM
item
■ 結果
タイトル |
---|
アンナチュラル 第1話 |
アンナチュラル 第2話 |
アンナチュラル 第3話 |
(null) |
||を利用して好きな文字を足すことができます。
concat()を使って文字結合
「 concat()」を使って文字を結合してみます。
SELECT
concat(Tittle, episode) as タイトル
FROM
item
■ 結果
タイトル |
---|
アンナチュラル第1話 |
アンナチュラル第2話 |
アンナチュラル第3話 |
アンナチュラル |
※ 連結要素にNullが含まれる場合Nullを非表示
「 concat() 」を使って文字結合(間にスペース)
上記方法だと間にスペースがなく少し窮屈なのでスペースを入れようと思います。
SELECT
concat(Tittle,’ ‘ , episode) as タイトル
FROM
item
■ 結果
タイトル |
---|
アンナチュラル 第1話 |
アンナチュラル 第2話 |
アンナチュラル 第3話 |
アンナチュラル |
()内に好きな文字を入れることができます。
「 || 」と「concat()」の違い
書き方の違いはありますが、使い分け方の違いにNullによる挙動の違いがあるのが上記の例でわかると思います。
- || の場合、連結要素にNullが含まれる場合Nullになります。
- concat()の場合、連結要素にNullが含まれる場合Nullを非表示
おわり
2つの書き方を紹介しました。SELECT文で指定した文字を見やすくカスタマイズできて便利そうですね。