複数の列の値を連結する場合には、CONCAT関数を利用します。
CONCAT関数の書式は以下です。
値を連結した結果を関数の戻り値として返します。
CONCAT([値,または列名 1], [値,または列名 2], ... [値,または列名 n])
以下のテーブルを用意します。
id | model | name | class | category | price |
---|---|---|---|---|---|
5 | C-XM01 | モーダンチェア | ホーム | チェア | 56000 |
6 | X-XD05 | ラージデスク | オフィス | テーブル | 87000 |
7 | A-DA40 | ラウンドダイニングチェア | ホーム | チェア | 28000 |
8 | O-XX100 | ナチュラルオフィス | オフィス | チェア | 13800 |
次のSQL文を実行します。name列とcategory列の値を連結した文字列を取得します。
SELECT CONCAT(TRIM(name),TRIM(category) FROM ProductsB
実行結果は以下になります。
モーダンチェアチェア
ラージデスクテーブル
ラウンドダイニングチェアチェア
ナチュラルオフィスチェア
例1と同じテーブルで以下のSQLを実行します。
"name列の値 (class列の値)" の文字列を取得します。
SELECT CONCAT(TRIM(name),' (',TRIM(category),')') FROM ProductsB
実行結果は以下になります。
モーダンチェア (チェア)
ラージデスク (テーブル)
ラウンドダイニングチェア (チェア)
ナチュラルオフィス (チェア)
SQL Serverの場合は +
演算子で文字列を連結することができます。また、PostgreSQLの場合は ||
演算子で文字列を連結することができます。
ただしいづれかの要素が NULL の場合結果がNULLとなってしまう点に注意が必要です。
以下のSQL文を実行して動作を確認します。
SELECT TRIM(ISNULL(name,'')) + ' (' + TRIM(ISNULL(category,'')) + ')' FROM ProductsB
実行結果は以下になります。先の CONCAT関数を利用した場合と同じ結果になります。
モーダンチェア (チェア)
ラージデスク (テーブル)
ラウンドダイニングチェア (チェア)
ナチュラルオフィス (チェア)