Seriøst - VARCHAR(MAX)
kan gemme op til 2 GB data - ikke kun 8000 tegn.....
Prøv dette:
DECLARE @myVar VARCHAR(MAX) = ''
DECLARE @ix INT = 1
WHILE @ix < 1000
BEGIN
set @myVar = @myVar + CAST('bla bla bla' AS VARCHAR(MAX))
SET @ix = @ix + 1
END
SELECT DATALENGTH(@myvar)
Dette vil returnere en værdi højere end 8000 tegn efter 1000 gentagelser.
Pointen er:hvis du bruger varchar(max)
, skal du sørge for altid at caste alle dine strenge til varchar(max)
eksplicit - som jeg gjorde i dette eksempel. Ellers vil SQL Server falde tilbage til "almindelig" varchar
behandling, og det er faktisk begrænset til 8000 tegn....