CONCAT (Transact-SQL)

適用于: Microsoft Fabric 中 Microsoft Fabric 倉儲中的 SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW) SQL 分析端點

此函式會傳回透過以端對端方式串連 (或聯結) 兩個以上字串值所產生的字串。

注意

若要在串連期間新增分隔值,請使用 CONCAT_WS

Transact-SQL 語法慣例

Syntax

CONCAT ( argument1 , argument2 [ , argumentN ] ... )

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

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( < = 4000 Nvarchar( < = 4000
4.在所有其他情況下 Varchar 類型為最多 8000 個字元的任何引數( Varchar( < = 8000 ), 除非其中一個參數是 任何長度的 Nvarchar 在該情況下,CONCAT 會傳回 nvarchar(max) 類型的結果。

CONCAT 收到長度 <= 4000 個字元的 nvarchar 輸入引數,或長度 <= 8000 個字元的 varchar 輸入引數時,隱含轉換會影響結果長度。 其他資料類型在隱含地轉換成字串時,長度會不同。 例如, 值為 14 的 int 字串長度為 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