本文使用的环境是SQL Server 2017, 主机是64位操作系统。
大家都知道,Micorosoft Docs对 max参数的定义是:max 指定最大的存储空间是2GB,这个结论是正确的。
nvarchar [ ( n | max ) ]
Variable-size string data. n defines the string size in byte-pairs and can be a value from 1 through 4,000. max indicates that the maximum storage size is 2^30-1 characters (2 GB).
结论1:
当定义数据表的一个nvarchar(max)类型的数据列时,该类型存储数据的最大空间是2GB。
当定义nvarchar(max)类型的变量时,该变量的最大空间是2GB。
结论2:
当定义一个nvarchar(max)类型的变量时,该变量的最大存储空间是2GB。但是有些字符串函数处理的结果可能不会多于8000B,做一个简单的测试,调用replicate()函数,对一个Unicode 字符(占2B)重复5000次,返回的字符串的最大长度是8000B,即使多次拼接也不能突破8000B的限制:
print datalength(replicate(N'a',5000))
prin