NVARCHAR(MAX) 不能容纳 50478 个字符

Posted

技术标签:

【中文标题】NVARCHAR(MAX) 不能容纳 50478 个字符【英文标题】:NVARCHAR(MAX) doesn't accommodate 50478 characters 【发布时间】:2015-06-01 09:02:03 【问题描述】:

我正在尝试在 nvarchar(max) 数据库字段中存储一个长度为 50478 个字符的字符串。根据this link,它告诉 nvarchar(max) 字段最多可以存储 10 亿个字符,但是当我尝试仅存储 50478 个字符时,sql 会截断它们并且不存储完整的字符串。

如何解决这样的问题?

你认为这只是sql server management studio的打印问题吗?

【问题讨论】:

你怎么知道它只存储了 50478 个字符?你用print了吗? 查询SELECT LENGTH(myField) as myFieldLength FROM myTable会得到什么?它应该给你 50478。 你在做 SSMS 的SELECT .. 吗?如果是这样,请注意输出将被截断。查看查询结果下的工具选项以设置每列显示多少个字符。 我用 C# 脚本统计了它们 然后按照@StuartLC 的评论,即你可以将它设置为65535(查询>>选项>>结果>>网格) 【参考方案1】:

您需要确保插入该字段的数据也被转换为 nvarchar,否则您将无法实现所需的内容。

以此为例:

Create table #temp (this nvarchar(max))

insert into #temp values (REPLICATE(cast('a' as nvarchar(max)), 50478))

Select this, Len(this) from #temp

drop table #temp

也可以在 SQL Fiddle 上查看:http://sqlfiddle.com/#!6/551f7/2/0

【讨论】:

以上是关于NVARCHAR(MAX) 不能容纳 50478 个字符的主要内容,如果未能解决你的问题,请参考以下文章

如何将列从 nvarchar(max) 更改为 nvarchar(50)

sql中nvarchar(max)长度测试

nvarchar 连接 / 索引 / nvarchar(max) 莫名其妙的行为

NVARCHAR(MAX) 的最大字符数是多少? [复制]

使用 VARCHAR(max)、NVARCHAR(max) 和 VARBINARY(max) 代替 TEXT、NTEXT 和 IMAGE 有啥好处? [关闭]

Openjson 在定义 nvarchar(max) 时不返回 json 对象,并且由 nvarchar(4000) 工作