gpt4 book ai didi

sql-server - SQL 服务器 : Handle of string concatenation

转载 作者:行者123 更新时间:2023-12-02 00:24:06 25 4
gpt4 key购买 nike

给定一个变量 nvarchar(max),输入是 'aaaaa...',长度为 16000。变量的值在此设置下没有问题。

如果我将输入分解为 3 个较小的输入,比方说 (7964,4594,3442),变量会截断它们的串联。

另一方面,如果至少有一个变量的大小超过 8000,则串联工作没有问题。

是否有任何关于上述行为的文档?

最佳答案

取自docs :

If the result of the concatenation of strings exceeds the limit of 8,000 bytes, the result is truncated. However, if at least one of the strings concatenated is a large value type, truncation does not occur.

varchar 和 nvarchar 之间的操作分别限制为 8000 和 4000 个字符,除非您将任何涉及的数据类型视为 MAX。请注意操作顺序,这是来自文档的一个很好的例子:

DECLARE @x varchar(8000) = replicate('x', 8000)
DECLARE @y varchar(max) = replicate('y', 8000)
DECLARE @z varchar(8000) = replicate('z',8000)

SET @y = @x + @z + @y

-- The result of following select is 16000
SELECT len(@y) AS y

结果是 16k 而不是 24k,因为第一个操作是 @x + @z,它在 8000 处被截断,因为它们都不是 MAX。然后将结果连接到 MAX 的类型,从而打破了 8000 作为限制的限制,它从 @y 添加了另外 8000 个字符。结果,变量 @z 中的字符在第一次连接时丢失。

关于sql-server - SQL 服务器 : Handle of string concatenation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54327359/

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