

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

# CONCAT 函數
<a name="CONCAT"></a>

CONCAT 函數會串連兩個運算式，並傳回產生的運算式。若要串連兩個以上的運算式，請使用巢狀 CONCAT 函數。兩個運算式之間的串連運算子 (`||`) 產生與 CONCAT 函數相同的結果。

**注意**  
對於 CONCAT 函數和串連運算子，如果一個或兩個運算式為 Null，則串連的結果為 Null。

## 語法
<a name="CONCAT-synopsis"></a>

```
CONCAT ( expression1, expression2 )
```

## 引數
<a name="CONCAT-arguments"></a>

 *expression1*、*expression2*   
這兩個引數都可以是固定長度的字元字串、可變長度字串、二進位運算式或計算結果為這些輸入之一的運算式。

## 傳回類型
<a name="CONCAT-return-type"></a>

 CONCAT 傳回一個運算式。運算式的資料類型與輸入引數的類型相同。

如果輸入表達式的類型不同， 會 AWS Clean Rooms 嘗試隱含輸入轉換其中一個表達式。如果無法轉換數值，系統會傳回一個錯誤。

## 範例
<a name="CONCAT-examples"></a>

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

```
select concat('December 25, ', '2008');

concat
-------------------
December 25, 2008
(1 row)
```

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

```
select 'December 25, '||'2008';

concat
-------------------
December 25, 2008
(1 row)
```

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

```
select concat('Thursday, ', concat('December 25, ', '2008'));

concat
-----------------------------
Thursday, December 25, 2008
(1 row)
```

若要串連可能包含 Null 的欄，請使用 [NVL 和 COALESCE 函數](NVL_function.md)。下列範例使用 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)
```