CONCAT (Transact-SQL)
適用于:SQL Server
Azure SQL資料庫
Azure SQL 受控執行個體Azure Synapse
Analytics Analytics
Platform System (PDW)
Microsoft Fabric
倉儲中的 SQL 端點
此函式會傳回透過以端對端方式串連 (或聯結) 兩個以上字串值所產生的字串。 (若要在串連期間新增分隔值,請參閱CONCAT_WS。)
Syntax
CONCAT ( string_value1, string_value2 [, string_valueN ] )
注意
若要檢視 SQL Server 2014 與更早版本的 Transact-SQL 語法,請參閱舊版文件。
引數
string_value
要串連至其他值的字串值。 CONCAT
函式需要至少兩個 string_value 引數,而且不能超過 254 個 string_value 引數。
傳回類型
string_value
長度和類型取決於輸入的字串值。
備註
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 輸入引數時,隱含轉換會影響結果長度。 其他資料類型在隱含地轉換成字串時,長度會不同。 例如,int (14) 的字串長度為 12,而 float的長度為 32。 因此,串連兩個整數會傳回長度不超過 24 的結果。
如果輸入引數沒有支援的大型物件 (LOB) 類型,則無論傳回類型為何,傳回類型的長度都會截斷成 8000 個字元。 這項截斷可以保留空間,讓產生計畫更具效率。
您可以在 SQL Server 2012 (11.x) 版及更新版本的連結伺服器上,以遠端方式執行 CONCAT 函數。 對於較舊的連結伺服器,會在連結伺服器傳回非串連值之後,於本機執行 CONCAT 作業。
範例
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)
另請參閱
CONCAT_WS (Transact-SQL)
FORMATMESSAGE (Transact-SQL)
QUOTENAME (Transact-SQL)
REPLACE (Transact-SQL)
REVERSE (Transact-SQL)
STRING_AGG (Transact-SQL)
STRING_ESCAPE (Transact-SQL)
STUFF (Transact-SQL)
TRANSLATE (Transact-SQL)
字串函數 (Transact-SQL)