Serius - VARCHAR(MAX)
dapat menyimpan data hingga 2 GB - bukan hanya 8000 karakter.....
Coba ini:
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)
Ini akan mengembalikan nilai lebih tinggi dari 8000 karakter setelah 1000 iterasi.
Intinya adalah:jika Anda menggunakan varchar(max)
, Anda harus memastikan untuk selalu melempar semua string Anda ke varchar(max)
secara eksplisit - seperti yang saya lakukan dalam contoh ini. Jika tidak, SQL Server akan kembali ke varchar
"biasa" pemrosesan, dan itu memang terbatas pada 8000 karakter....