文字結合でconcat()を使用したのですが、昔のメモを見ていたらconcat_ws()を使っていました。昔の自分は使い分けていたのに今の自分はさっぱり。悔しいのでconcat_ws()とconcat()の違いを調べ直してみました。
動作環境
SQL FIDDLEでMySQL5.6、PostgreSQL9.6で動作確認しています。
concat()とは
concat()はカッコ内全ての引数を結合します。
※ただしNULLは無視される。
書き方例
concat(‘100日後’, ‘に’ , ‘死ぬワニ’)
結果 : 100日後に死ぬワニ
concat_ws()とは
concat_ws()は第一引数を区切り文字とし、残りのすべての引数を結合します。
※ただしNULLは無視される。
書き方例
concat_ws(‘ ‘, ‘100日後’, ‘に’ , ‘死ぬワニ’)
※第一引数に半角スペースを入れました。
結果 : 100日後 に 死ぬワニ
実際に使ってみよう!
確認もかねて実際に書いて結果を取得してみます。
準備
以下のテーブルを使用し解説します。
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)
concat()のサンプルコード
SELECT
concat(itemID, ‘ : ‘, Tittle, episode, ‘です。’) as 結果
FROM
item
■ 結果
結果 |
---|
1 : アンナチュラル第1話です。 |
2 : アンナチュラル第2話です。 |
3 : アンナチュラル第3話です。 |
4 : アンナチュラルです。 |
文章を作る時などに便利です。
concat_ws()のサンプルコード
SELECT
concat_ws(‘, ‘ , itemID, Tittle, episode) as 結果
FROM
item
■ 結果
結果 |
---|
1, アンナチュラル, 第1話 |
2, アンナチュラル, 第2話 |
3, アンナチュラル, 第3話 |
4, アンナチュラル |
SVCファイル形式にする時など便利そうです。