CONCAT (Transact-SQL)

傳回串連兩個以上之字串值的結果字串。

主題連結圖示 Transact-SQL 語法慣例

適用於:SQL Server (SQL Server 2012 透過目前版本)、Windows Azure SQL 資料庫 (初始版本,透過目前版本)。

語法

CONCAT ( string_value1, string_value2 [, string_valueN ] )

引數

  • string_value
    要串連至其他值的字串值。

傳回類型

字串,其長度及類型取決於輸入。

備註

CONCAT 會採用可變數量的字串引數,並將其連成單一字串。 其至少需要兩個輸入值,否則會引發錯誤。 所有引數皆會以隱含方式轉換為字串類型,然後再行串連。 Null 值以隱含方式轉換為空白字串。 如果所有引數都是 Null,會傳回類型為 varchar(1) 的空白字串。 隱含轉換成字串會遵循現有的資料類型轉換規則。 如需有關資料類型轉換的詳細資訊,請參閱<CAST 和 CONVERT (Transact-SQL)>。

傳回類型取決於引數類型。 下表說明對應。

輸入類型

輸出類型及長度

如果有任何參數是 SQL CLR 系統類型、SQL CLR UDT 或 nvarchar(max)

nvarchar(max)

否則,如果有任何參數是 varbinary(max) 或 varchar(max)

varchar(max),除非其中一個參數是任何長度的 nvarchar。 若是如此,則結果是 nvarchar(max)

否則,如果有任何參數是 nvarchar(<= 4000)

nvarchar(<= 4000)

否則,在所有其他情況下

varchar(<= 8000),除非其中一個參數是任何長度的 nvarchar。 若是如此,則結果是 nvarchar(max)

當 nvarchar 的引數為 <= 4000,或 varchar 的引數為 <= 8000,則隱含轉換可能會影響結果的長度。 當其他資料類型以隱含方式轉換為字串時,長度會有所不同。 例如,int (14) 的字串長度為 12,而 float 的長度為 32。 因此,串連兩個整數之後長度將不會小於 24。

如果輸入引數中無一是受支援的大型物件 (LOB) 類型,則無論傳回何種類型,傳回類型的長度皆會截斷成 8000。 此截斷可以保留空間,讓產生計畫更有效率。

函數可以在 SQL Server 2014 伺服器和更新版伺服器上以遠端方式進行。 它在版本低於 SQL Server 2014 的伺服器上無法以遠端方式運作。

範例

A.使用 CONCAT

SELECT CONCAT ( 'Happy ', 'Birthday ', 11, '/', '25' ) AS Result;

以下為結果集:

Result
-------------------------
Happy Birthday 11/25

(1 row(s) affected)

B.使用 CONCAT 搭配 NULL 值

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

(1 row(s) affected)