Nghiêm túc - VARCHAR(MAX)
có thể lưu trữ tới 2 GB dữ liệu - không chỉ 8000 ký tự .....
Hãy thử điều này:
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)
Điều này sẽ trả về giá trị cao hơn hơn 8000 ký tự sau 1000 lần lặp.
Vấn đề là:nếu bạn đang sử dụng varchar(max)
, bạn cần đảm bảo luôn truyền tất cả các chuỗi của bạn thành varchar(max)
rõ ràng - như tôi đã làm trong ví dụ này. Nếu không, SQL Server sẽ trở về "thông thường" varchar
xử lý và con số đó thực sự bị giới hạn ở 8000 ký tự ....