gpt4 book ai didi

sql-server - SQL Server 2008 Nvarchar(Max) 连接 - 截断问题

转载 作者:行者123 更新时间:2023-12-03 02:43:14 25 4
gpt4 key购买 nike

有人可以解释一下为什么在 SQL Server 2008 上会发生这种情况吗:

declare @sql Nvarchar(max);

set @sql =N'';

select @sql = @sql +replicate('a',4000) + replicate('b', 6000);

select len(@sql)

返回:8000

多个站点表明,只要第一个变量是 NVARCHAR(MAX) 类型,就不应该发生截断,但它仍然会发生。

最佳答案

因为'a''b'不是NVARCHAR(MAX)类型

像这样,它应该可以工作:

declare @sql Nvarchar(max),
@a nvarchar(max),
@b nvarchar(max);

select @sql =N'', @a = N'a', @b = N'b';

select @sql = @sql +replicate(@a,4000) + replicate(@b, 6000);

select len(@sql)

这是 Microsoft 的 REPLICATE 函数信息的链接: https://msdn.microsoft.com/en-us/library/ms174383.aspx

里面写着:

If string_expression is not of type varchar(max) or nvarchar(max), REPLICATE truncates the return value at 8,000 bytes. To return values greater than 8,000 bytes, string_expression must be explicitly cast to the appropriate large-value data type.

关于sql-server - SQL Server 2008 Nvarchar(Max) 连接 - 截断问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29931706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com