本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
CONCAT 函數會串連兩個運算式,並傳回產生的運算式。若要串連兩個以上的運算式,請使用巢狀 CONCAT 函數。兩個運算式之間的串連運算子 (||
) 產生與 CONCAT 函數相同的結果。
語法
CONCAT ( expression1, expression2 )
引數
- expression1、expression2
-
這兩個引數都可以是固定長度的字元字串、可變長度字串、二進位運算式或計算結果為這些輸入之一的運算式。
傳回類型
CONCAT 傳回一個運算式。運算式的資料類型與輸入引數的類型相同。
如果輸入運算式的類型不同,Amazon Redshift 會嘗試以隱含方式輸入轉換其中一個運算式。如果無法轉換數值,系統會傳回一個錯誤。
使用須知
對於 CONCAT 函數和串連運算子,如果一個或兩個運算式為 Null,則串連的結果為 Null。
範例
下列範例串連兩個字元常值:
SELECT CONCAT('December 25, ', '2008');
concat
-------------------
December 25, 2008
(1 row)
下列查詢 (使用 ||
運算子,而不是 CONCAT) 產生相同的結果:
SELECT 'December 25, '||'2008';
?column?
-------------------
December 25, 2008
(1 row)
下列範例會使用另一個 CONCAT 函數內的巢狀 CONCAT 函數來連接三個字元字串:
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)
下列範例會串連兩個二進位運算式。其中 abc
是二進位值 (以十六進位表示 616263
),且 def
是二進位值 (使用十六進位表示 646566
)。結果會自動顯示為二進位值的十六進位表示。
SELECT CONCAT('abc'::VARBYTE, 'def'::VARBYTE);
concat
-------------------
616263646566