首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nvarchar(Max) = nvarchar(4000)是什么时候?

nvarchar(Max) = nvarchar(4000)是什么时候?
EN

Stack Overflow用户
提问于 2019-03-29 10:16:31
回答 1查看 7.5K关注 0票数 5

在SO和其他站点上都有多个帖子,其中明确指出nvarchar(max)的最大长度为2GB。然而,我也看到,在互联网和现实生活中,它实际上是8000/4000的Unicode。

我想知道什么事情可以改变这一事实,或者可能导致一些人错误地假设这一点。

我已经收集到了一些建议/部分答案:

  1. 是否有只支持最多4000的较早版本的Server?
  2. 当将nvarchar(max)变量/列分配给非最大大小组件的级联时,必须显式地将所有内容转换为nvarchar(max)吗?这里展示了一个奇怪的示例,其中文本返回函数需要转换,而文字的N可以省略: 声明@s nvarchar(max)选择@s =转换(nvarchar(Max),复制(‘.’,8000)) +N‘’Hi!‘选择len( @s ) --返回8003 declare @s nvarchar(max) select @s=复制(‘.’,8000) +N‘’Hi!选择len( @s ) --返回4000 declare @s nvarchar(max) select @s= convert(nvarchar(max),复制(‘.’,8000)) + 'Hi!‘选择len(@s) --返回8003
  3. 是否有禁用该功能的方法?sp_tableoption @OptionName=large value types out of rowOBJECTPROPERTY(id,'TableTextInRowLimit')与此有任何关系吗? Clarification:我的目标不是使用这个功能,而是要注意它的存在,它可能确实被一个更高权限的用户所使用,这将阻止我使用最大的大小。
  4. 任何其他问题都很高兴欢迎。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-29 10:27:59

这里有几点,因为我不能发表评论。

  1. 是。(n)varchar(MAX)在Server 2005中引入。在此之前,您必须使用textntextimage来实现varchar(MAX)nvarchar(MAX)varbinary(MAX)。旧的数据类型已经被废弃很长时间了,您不应该使用它们。
  2. 在组合数据时,使用数据类型优先来计算最终的数据类型。当涉及长度时,使用长度的组合值( varchar(10)varchar(100)连接将返回varchar(110)。但是,请注意,要实现MAX长度的使用,至少必须有一个字符串是(n)varchar(MAX)SELECT REPLICATE(N'A',3000) + REPLICATE(N'A',3000) AS S将返回一个4000个字符串。+(字符串连接) (Transact-SQL) -备注:如果字符串连接的结果超过了8,000个字节的限制,则结果被截断。但是,如果连接的字符串中至少有一个是大值类型,则不会发生截断。
  3. 禁用什么功能?(n)varchar(MAX)的用法?为什么?如果您想停止使用数据类型的人,请停止使用(n)textimage。但是,严肃地说,您不能停止使用数据类型。也许您可以使用DDL触发器获得“聪明”,但我建议您不要这样做。

要回答编辑,不能使用sp_tableoption来阻止使用MAX长度数据类型no的人;我的上述观点仍然有效。引用文档(表选项(Transact-SQL) -参数:行外的大值类型):

表中的1= varchar(max)nvarchar(max)varbinary(max)xml和大型用户定义类型(UDT)列存储在行外,并带有指向根的16字节指针。

0= varchar(max)nvarchar(max)varbinary(max)xml和较大的UDT值直接存储在数据行中,最多可存储8000字节,并且只要该值适合记录。如果值不适合记录,指针将存储在行中,其余的则存储在LOB存储空间中的行外。0是默认值。

大用户定义类型(UDT)适用于: Server 2008到Server 2017.

使用TEXTIMAGE_ON选项CREATE TABLE指定存储大型数据类型的位置。

  1. 太宽了。
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55415146

复制
相关文章

相似问题

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