PRINT Convert(VarChar(Max),Replicate('1234567890 ',1000))
返回到窗口7,997个字符。
SELECT Convert(VarChar(Max),Replicate('1234567890 ',1000))
这将返回到网格7,996个字符。打印窗口中的多余字符是CRLF。我有这样的选择:
工具→选项→查询结果→结果文本→每列中显示的最大字符数= 8192
因此,我希望在网格中返回8,192个字符,并希望向窗口中返回11,001个字符。
然后有这个测试:
DECLARE @VarCharMax VarChar(Max)
SET @VarCharMax = Replicate('123456',2000)
SELECT Right(@VarCharMax,3) -- returns 456
SELECT Right(Left(@VarCharMax,8000),3) -- returns 456
SELECT Right(Left(@VarCharMax,7999),3) -- returns 456
SELECT Right(Left(@VarCharMax,7998),3) -- returns 456
SELECT Right(Left(@VarCharMax,7997),3) -- returns 345
SELECT Right(Left(@VarCharMax,7996),3) -- returns 234
我在这里缺少了解什么?它似乎根本不符合我的预期?
最佳答案
除非参数的类型为varchar(max)/ nvarchar(max),否则复制函数的限制为8000个字符
https://msdn.microsoft.com/en-us/library/ms174383.aspx
如果string_expression的类型不是varchar(max)或nvarchar(max),则REPLICATE会截断8,000个字节的返回值。要返回大于8,000个字节的值,必须将string_expression显式转换为适当的大值数据类型。