CONCAT 函數 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

CONCAT 函數

CONCAT 函數串連兩個表達式並傳回產生的表達式。若要串連兩個以上的表達式,請使用嵌套 CONCAT 函數。串聯運算符(||) 產生與 CONCAT 函數相同的結果。

注意

對於 CONCAT 函數和串連運算子,如果一個或兩個表達式為 Null,則串連的結果為 Null。

Syntax (語法)

CONCAT ( expression1, expression2 )

引數

expression1expression2

這兩個參數可以是固定長度字符串、可變長度字符串、二進制表達式或計算為其中一個輸入的表達式。

傳回類型

CONCAT 返回一個表達式。表達式的資料類型與輸入引數的類型相同。

如果輸入表達式的類型不同,Amazon Redshift 會嘗試隱式鍵入轉換其中一個表達式。如果值無法轉換,則返回錯誤。

範例

下列範例串連兩個字元常值:

select concat('December 25, ', '2008'); concat ------------------- December 25, 2008 (1 row)

下列查詢 (使用 || 運算子,而不是 CONCAT) 產生相同的結果:

select 'December 25, '||'2008'; ?column? ------------------- December 25, 2008 (1 row)

下列範例使用兩個 CONCAT 函數來串連三個字元字串:

select concat('Thursday, ', concat('December 25, ', '2008')); concat ----------------------------- Thursday, December 25, 2008 (1 row)

若要串連可能包含 Null 的欄,請使用 NVL 表達式。下列範例使用 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)

下列範例串連兩個二進制表達式。WHEREabc是一個二進制值(使用十六進制表示616263)和def是一個二進制值(十六進制表示為646566。結果將自動顯示為二進制值的十六進制表示形式。

select concat('abc'::varbyte, 'def'::varbyte); concat ------------------- 616263646566