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)
nvarchar 连接 / 索引 / nvarchar(max) 莫名其妙的行为
使用 VARCHAR(max)、NVARCHAR(max) 和 VARBINARY(max) 代替 TEXT、NTEXT 和 IMAGE 有啥好处? [关闭]
Openjson 在定义 nvarchar(max) 时不返回 json 对象,并且由 nvarchar(4000) 工作