首页
学习
活动
专区
圈层
工具
发布

Server
EN

Stack Overflow用户
提问于 2018-07-21 18:31:22
回答 2查看 306关注 0票数 1

我有三个变量:

代码语言:javascript
复制
declare @A NVARCHAR(MAX), @B NVARCHAR(MAX), @C NVARCHAR(MAX)

@A由40000个字符填充,@B填充50000个字符。

现在我想将@a@b连接到@c中,如下所示:

代码语言:javascript
复制
@c = @a + @b

并使用@c更新列。但当我与他们联系时,我会丢失一些数据。

我怎么才能解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-22 06:07:22

不能向sql server单细胞插入超过43679个字符?

它是有用的

计算我的数据保存的复杂,但SSMS -不能粘贴超过43679字符从一列在网格模式

票数 0
EN

Stack Overflow用户

发布于 2018-07-21 20:29:07

问题似乎不在于连接本身。

您可以使用这个SQL片段来测试它:

代码语言:javascript
复制
declare @A NVARCHAR(MAX), @B NVARCHAR(MAX), @C NVARCHAR(MAX);
set @A = replicate(N'A',4000);
set @A = @A + @A + @A + @A + @A;
set @A = @A + @A;
set @B = replicate(N'B',2500);
set @B = @B + @B + @B + @B + @B;
set @B = @B + @B;
set @B = @B + @B;

-- CONCAT(@A,@B) gives the same result as @A+@B. 
-- But @A+@B would return NULL if @A or @B is NULL.
set @C = CONCAT(@A, @B);

select len(@A) as sizeA, len(@B) as sizeB, len(@C) as sizeC;

返回:

代码语言:javascript
复制
sizeA   sizeB   sizeC
-----   -----   -----
40000   50000   90000

而NVARCHAR(最大)最多可以包含2^30-1个字符.

所以1073741823个角色是..。很多。参考这里

即使这受到最大存储容量2G的限制。然后它仍然可以包含1000000000的2字节unicode字符.

换句话说,大约有3333.3本书,平均每本书有300000个字符。

许多图书馆可能会把它们所有的小说存储在一个NVARCHAR(MAX)中。

这个问题可能是由如何填充@A和/或@B引起的。

例如,如果您使用复制。

它只能填充多达4000个字符的NVARCHAR。

示例:

代码语言:javascript
复制
declare @X NVARCHAR(MAX);
set @X = replicate(N'X',10000);
select len(@X) as sizeX;

返回:

代码语言:javascript
复制
sizeX
-----
4000

所以有一个问题要问:

@A和/或@B是如何填充的,它们的数据长度是否与预期的一样?

如果@A或@B确实包含预期的字符数量?

但是,将单元格复制并粘贴到文本编辑器中并不能获得所有字符?

事实证明,只有多达43679个字符可以从具有非XML数据的单元格中复制到剪贴板中。

在SSMS的选项中,也存在对非Xml数据的限制。

见下面的截图。

因此,尝试复制和粘贴90000字符将被截断无论如何。

工作之一可能是将NVARCHAR(MAX)转换为选择中的XML类型。因为XML有默认的2MB限制。

示例片段:

代码语言:javascript
复制
declare @X NVARCHAR(MAX);
set @X = replicate(N'0123456789',333); -- 3330
set @X = @X + @X + @X + @X + @X; -- 16650
set @X = @X + @X + @X + @X; -- 66600

select len(@X) as sizeX, cast(N'<X><![CDATA['+ @X +N']]></X>' as XML) as XasXml;
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51458994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档