[SQL]字串相加超過varchar 8000 的話,請使用 varchar(max) 哦!

當我們有2個字串要相加時,一個是 varchar(6000),另一個是 varchar(5000)。
要 CONCAT 起來會有什麼問題嗎? 

以下我們用範例來測試

DECLARE @a VARCHAR(6000) = REPLICATE('a', 6000);
DECLARE @b VARCHAR(5000) = REPLICATE('b', 5000);
DECLARE @c VARCHAR(MAX) = REPLICATE('c', 6000);
SELECT LEN(@a); -- 6000
SELECT LEN(@b); -- 5000

SELECT LEN(CONCAT(@a, @b)); --8000
SELECT LEN(@a +  @b); -- 8000

SELECT LEN(CONCAT(@a, @c)); -- 12000
SELECT LEN(@a +  @c); -- 12000

所以,varchar 超過 8000,nvarchar 超過 4000 的字串相加,

請使用 MAX 才會正確哦!

參考資料

CONCAT (Transact-SQL)

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^