关于varchar(max)的长度
F1帮助中的说明:最大说明符增强了 varchar、nvarchar 和 varbinary 数据类型的存储能力。varchar(max)、nvarchar(max) 和 varbinary(max) 统称为大值数据类型。您可以使用大值数据类型来存储最大为 2^31-1 个字节的数据。
重要提示:
请使用 varchar(max)、nvarchar(max) 和 varbinary(max) 数据类型,而不要使用 text、ntext 和 image 数据类型。
问题如下:
现在有一个字段,数据类型是varchar(max),但存储到一定的数据量,自动被截取了,导致数据不完整!
SQL code
SELECT DATALENGTH(paperInfo) FROM dbo.Paper
--------------------
181708
170692
1492
5504
3280
(5 行受影响)
超过181708的部分被截取了!
而后测试过text,ntext,结果一样!
------解决方案--------------------
跟写入数据的方式有关,如下例子.
SQL code
create table #t(id int,x varchar(max))
insert into #t(id,x) select 1,replicate('a',200000)
select id,datalength(x) from #t
id
----------- --------------------
1 8000
insert into #t(id,x) select 2,replicate(cast('b' as varchar(max)),200000)
select id,datalength(x) from #t
id
----------- --------------------
1 8000
2 200000
------解决方案--------------------