【发布时间】:2016-02-01 07:39:57
【问题描述】:
我使用 SQL Server 数据库来存储很长的 Unicode 字符串。该字段来自类型“ntext”,理论上应该限制为 2^30 个 Unicode 字符。
文本
可变长度 Unicode 数据,最大字符串长度为 2^30 - 1 (1,073,741,823) 个字节。存储大小(以字节为单位)是输入的字符串长度的两倍。 ntext 的 ISO 同义词是 national 文本。
我做了这个测试:
生成 50,000 个字符串。
-
运行更新 SQL 语句
更新 [表格] SET Response='... 50,000 个字符串...' 其中 ID='593BCBC0-EC1E-4850-93B0-3A9A9EB83123'
检查结果 - 最后实际存储在字段中的内容。
结果是 [Response] 字段仅包含 43,679 个字符。字符串末尾的所有字符都被丢弃。
为什么会这样?我该如何解决这个问题?
如果这真的是这个数据类型(ntext)的容量限制,还有哪个数据类型可以存储更长的Unicode字符串?
【问题讨论】:
-
您应该改用 Nvarchar(max),但 NText 字段可以容纳更大的字符串。
-
检查@iceman825 解决方案。这对我有用。
标签: sql sql-server sql-update ntext