適用於:SQL Server
Azure SQL 資料庫
Azure SQL 受控執行個體
Azure Synapse Analytics
分析平台系統(PDW)
Microsoft Fabric 中的 SQL 分析端點
Microsoft Fabric 中的倉儲
Microsoft Fabric 中的 SQL 資料庫
此函式會傳回透過以端對端方式串連 (或聯結) 兩個以上字串值所產生的字串。
注意
若要在串連期間新增分隔值,請使用 CONCAT_WS。
語法
CONCAT ( argument1 , argument2 [ , argumentN ] ... )
引數
argument1, argument2 [ , argumentN ]
任何字串值的表達式。
CONCAT 函式需要至少兩個引數,而且不能超過 254 個引數。
傳回類型
長度和類型取決於輸入的字串值。
備註
CONCAT 會採用可變數量的字串引數,並將其串連 (聯結) 成單一字串。 它至少需要兩個輸入值:否則, CONCAT 會引發錯誤。
CONCAT 會在串連之前將所有引數隱含地轉換成字串類型。
CONCAT 會將 Null 值隱含地轉換成空字串。 如果CONCAT收到具有所有NULL值的自變數,則會傳回 varchar(1) 類型的空字串。 隱含轉換成字串會遵循現有的資料類型轉換規則。 如需有關資料類型轉換的詳細資訊,請參閱 CAST 和 CONVERT (Transact-SQL)。
傳回類型取決於引數類型。 此表說明對應:
| 輸入類型 | 輸出類型及長度 |
|---|---|
| 1.SQL-CLR 系統類型、SQL-CLR UDT 或 nvarchar(max) 的任何自變數 | nvarchar(max) |
| 2. 否則,varbinary(max) 或 varchar(max) 類型的任何自變數 |
varchar(max) ,除非其中一個參數是任何長度的 nvarchar。 在此情況下,CONCAT 會傳回 nvarchar(max) 類型的結果。 |
| 3. 否則,nvarchar 類型為最多 4000 個字元的任何自變數(nvarchar(<)) | nvarchar(<= 4000) |
| 4.在所有其他情況下 | varchar 類型為最多 8000 個字元的任何自變數(varchar(<),除非其中一個參數是任何長度的 nvarchar。 在該情況下,CONCAT 會傳回 nvarchar(max) 類型的結果。 |
CONCAT 收到長度 = 4000 個字元的 < 輸入引數,或長度 = 8000 個字元的 < 輸入引數時,隱含轉換會影響結果長度。 其他資料類型在隱含地轉換成字串時,長度會不同。 例如,14 字串長度為 2,而1234.56789數則字串長度為 7 (1234.57)。 因此,這兩個值的串連會傳回長度不超過 9 個字元的結果。
如果沒有任何輸入自變數具有支援的大型物件 (LOB) 類型,則不論傳回型別為何,傳回型別都會截斷為長度為 8,000 個字元。 這項截斷可以保留空間,讓產生計畫更具效率。
CONCAT 可以在執行 SQL Server 2012 (11.x) 和更新版本的連結伺服器上從遠端執行。 對於較舊的連結伺服器, CONCAT 在鏈接的伺服器傳回非串連值之後,作業將會在本機進行。
範例
A. 使用 CONCAT
SELECT CONCAT ('Happy ', 'Birthday ', 11, '/', '25') AS Result;
結果集如下所示。
Result
--------------------
Happy Birthday 11/25
B. 搭配 NULL 值使用 CONCAT
CREATE TABLE #temp (
emp_name NVARCHAR(200) NOT NULL,
emp_middlename NVARCHAR(200) NULL,
emp_lastname NVARCHAR(200) NOT NULL
);
INSERT INTO #temp
VALUES ('Name', NULL, 'Lastname');
SELECT CONCAT (emp_name, emp_middlename, emp_lastname) AS Result
FROM #temp;
結果集如下所示。
Result
------------
NameLastname