SQL Server 2012 引入 CONCAT(),解決舊版本需手動 CAST/CONVERT 再用 + 串接的痛點。支援最多 255 參數,自動處理 NULL 與隱含型別轉換。
CONCAT ( string_value1, string_value2 [, string_valueN ] )
NULL 視為空字串 '';全 NULL 回傳 VARCHAR(1) 空字串。DECLARE @a VARCHAR(100) = 'Jim is now ';
DECLARE @b INT = 10;
DECLARE @c VARCHAR(200) = ' years old';
-- 新寫法:自動處理 INT→VARCHAR
SELECT CONCAT(@a, @b, @c);
-- 結果:Jim is now 10 years old
-- 舊寫法:需顯式轉換
SELECT @a + CAST(@b AS VARCHAR) + @c; -- 同樣結果但較繁瑣
| 輸入型別 | 輸出型別 |
|---|---|
| SQL-CLR (UDT) | NVARCHAR(MAX) |
| NVARCHAR(MAX) | NVARCHAR(MAX) |
| NVARCHAR(≤4000) | NVARCHAR(≤4000) |
| VARBINARY(MAX) | NVARCHAR(MAX) |
| 其他型別 | VARCHAR(≤8000)* |
* 若任一參數為任意長度 NVARCHAR,輸出升級為 NVARCHAR(MAX)。
PARSE、TRY_CONVERT、TRY_PARSEDATEFROMPARTS、DATETIME2FROMPARTS、EOMONTH、TIMEFROMPARTS 等CHOOSE、IIFFORMAT (依 .NET 格式化字串輸出)若專案仍在 SQL Server 2008 R2 或更舊版本,升級至 2012+ 即可享受 CONCAT 簡化字串處理,減少 Bug 並提升可讀性。