CONCAT 関数は、2 つの式を連結し、結果の表現を返します。3 つ以上の式を連結するには、CONCAT 関数をネストして使用します。2 つの式の間に連結演算子 (||
) を指定した場合も、CONCAT 関数と同じ結果が返されます。
構文
CONCAT ( expression1, expression2 )
引数
- expression1, expression2
-
どちらの引数にも、固定長文字列、可変長文字列、バイナリ式、またはこれらの入力のいずれかとして評価される式を指定できます。
戻り型
CONCAT は式を返します。式のデータ型は、入力引数の型と同じです。
入力式の型が異なる場合、Amazon Redshift はそれらの式の 1 つを暗黙的に型キャストしようとします。値を型キャストできない場合は、エラーが返されます。
使用に関する注意事項
CONCAT 関数ならびに連結演算子のどちらにおいても、一方または両方の表現が null である場合は、連結の結果も null になります。
例
次の例では、2 つの文字リテラルを連結します。
SELECT CONCAT('December 25, ', '2008');
concat
-------------------
December 25, 2008
(1 row)
次のクエリでは、CONCAT ではなく ||
演算子を使用しており、同じ結果が返されます。
SELECT 'December 25, '||'2008';
?column?
-------------------
December 25, 2008
(1 row)
次の例では、ネストされた CONCAT 関数を別の CONCAT 関数の中で使用して 3 つの文字列を連結します。
SELECT CONCAT('Thursday, ', CONCAT('December 25, ', '2008'));
concat
-----------------------------
Thursday, December 25, 2008
(1 row)
NULL を含む可能性のある列を連結するには、NVL および COALESCE 関数 を使用し、NULL に遭遇したときに特定の値を返します。次の例は、NVL を使用して、NULL が発生するたびに 0 を返します。
SELECT CONCAT(venuename, CONCAT(' seats ', NVL(venueseats, 0))) AS seating
FROM venue WHERE venuestate = 'NV' OR venuestate = 'NC'
ORDER BY 1
LIMIT 5;
seating
-----------------------------------
Ballys Hotel seats 0
Bank of America Stadium seats 73298
Bellagio Hotel seats 0
Caesars Palace seats 0
Harrahs Hotel seats 0
(5 rows)
次のクエリでは、VENUE テーブル内の CITY 値と STATE 値を連結します。
SELECT CONCAT(venuecity, venuestate)
FROM venue
WHERE venueseats > 75000
ORDER BY venueseats;
concat
-------------------
DenverCO
Kansas CityMO
East RutherfordNJ
LandoverMD
(4 rows)
次のクエリでは、ネストされた CONCAT 関数を使用しています。このクエリは、VENUE テーブル内の CITY 値と STATE 値を連結しますが、結果の文字列をカンマおよびスペースで区切ります。
SELECT CONCAT(CONCAT(venuecity,', '),venuestate)
FROM venue
WHERE venueseats > 75000
ORDER BY venueseats;
concat
---------------------
Denver, CO
Kansas City, MO
East Rutherford, NJ
Landover, MD
(4 rows)
次の例では、2 つのバイナリ式を連結します。ここで、abc
は 616263
の 16 進数表現を含む 2 進数値 であり、def
は 646566
の 16 進数表現を含む 2 進数値です。結果は、バイナリ値の 16 進数表現として自動的に出力されます。
SELECT CONCAT('abc'::VARBYTE, 'def'::VARBYTE);
concat
-------------------
616263646566