CONCAT (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)