適用于:
SQL Server
Azure SQL資料庫
Azure SQL 受控執行個體Azure Synapse
Analytics Analytics
Platform System (PDW)
此函式會傳回透過以端對端方式串連 (或聯結) 兩個以上字串值所產生的字串。 (若要在串連期間新增分隔值,請參閱
CONCAT_WS
。)
Transact-SQL 語法慣例
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) 。
傳回類型取決於引數類型。 此表說明對應:
輸出類型及長度
2.否則,是下列類型的任何參數:
varbinary(max)
或
varchar(max)
varchar(max) ,除非其中一個參數是任何長度的 nvarchar。 在此情況下,CONCAT 會傳回 nvarchar(max) 類型的結果。
3.否則為 nvarchar 類型且最多 4000 個字元的任何引數
( Nvarchar (< = 4000) )
Nvarchar (< = 4000)
4.在所有其他情況下
Varchar (< = 8000) (最多 8000 個字元的 Varchar) ,除非其中一個參數是任何長度的 Nvarchar。 在該情況下,CONCAT 會傳回 nvarchar(max) 類型的結果。
當 CONCAT 收到長度 < = 4000 個字元的Nvarchar輸入引數,或長度 < 為 8000 個字元的Varchar輸入引數時,隱含轉換可能會影響結果的長度。 其他資料類型在隱含地轉換成字串時,長度會不同。 例如,int (14) 的字串長度為 12,而 float的長度為 32。 因此,串連兩個整數會傳回長度不超過 24 的結果。
如果輸入引數沒有支援的大型物件 (LOB) 類型,則無論傳回類型為何,傳回類型的長度都會截斷成 8000 個字元。 這項截斷可以保留空間,讓產生計畫更具效率。
CONCAT 函式可以在 2012 SQL Server 2012 (11.x) 和更新版本的連結伺服器上遠端執行。 對於較舊的連結伺服器,會在連結伺服器傳回非串連值之後,於本機執行 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)