微软宣布:“ ntext
, text
, 和image
数据类型将在 Microsoft SQL Server 的未来版本中被删除。” 并建议使用nvarchar(max)
, varchar(max)
, andvarbinary(max)
代替。
我的问题:我的数据类型大于 8 kb。如何将这些数据插入到 sql 中?哪种数据类型可以解决我的问题?
微软宣布:“ ntext
, text
, 和image
数据类型将在 Microsoft SQL Server 的未来版本中被删除。” 并建议使用nvarchar(max)
, varchar(max)
, andvarbinary(max)
代替。
我的问题:我的数据类型大于 8 kb。如何将这些数据插入到 sql 中?哪种数据类型可以解决我的问题?
nvarchar(max)、varchar(max)和varbinary(max)中的任何一个。
nvarchar(max) 和 varchar(max) 用于文本信息(nvarchar 支持 unicode)。
varbinary(max) 用于二进制数据(图像、文件等)。
在所有情况下,都有记录表明使用MAX
indicates that the maximum storage size is 2^31-1 bytes.
如果是文本数据,则为varchar(max)
or nvarchar(max)
(支持 unicode)。varchar(max) 的最大存储大小为 2^31-1 字节(参考)
如果是二进制数据,则使用varbinary(max)
.
您将使用nvarchar(max)
,varchar(max)
或varbinary(max)
如果插入大于 8KB 行限制的数据,则数据将移出行到 ROW_OVERFLOW_DATA 分配单元中的另一个页面。
以下MSDN 文章更详细地解释了此过程。
我相信 varchar(max) 的最大值是 2GB。
不要被“varchar”位混淆。
这基本上意味着您可以varchar(max)
像在 varchar(50) or
varchar(1000) or
varchar(8000) 上一样使用大多数函数。
因此,您可以拥有varchar(50)
或varchar(1000)
最多varchar(8000)
但要存储更长的字符串,您将使用varchar(max)
.
“max”或“50”/“1000”/“8000”位只是确定内部存储+最大字符串长度。
当然,还有一些细微的差异,例如索引。