在下面的查询中,nvarchar(max)似乎截断为4000个字符。 这似乎与答案here相反,后者表示"由于NVARCHAR每个字符使用2个字节,因此约为。 10亿个字符。"
DECLARE @test NVARCHAR(MAX)
DECLARE @i INT
SET @i=0
set @test=cast('x' as nvarchar(max))
while(@i<6000)
begin
set @test= (@test+ cast('x' as nvarchar(max)))
set @i=@i+1
end
print @TEST--has only 4000 characters
答案 0 :(得分:1)
抱歉,刚发现这是Sql server management studio中消息界面的限制。下面的代码显示了正确的结果
DECLARE @test NVARCHAR(MAX)
DECLARE @i INT
SET @i=0
set @test=cast('x' as nvarchar(max))
while(@i<6000)
begin
set @test= (@test+ cast('x' as nvarchar(max)))
set @i=@i+1
end
print len(@TEST)--6001