当前位置: 代码迷 >> Sql Server >> 关于varchar(max)的长度解决思路
  详细解决方案

关于varchar(max)的长度解决思路

热度:113   发布时间:2016-04-27 12:50:35.0
关于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 #tid          ----------- --------------------1           8000insert into #t(id,x) select 2,replicate(cast('b' as varchar(max)),200000)select id,datalength(x) from #tid          ----------- --------------------1           80002           200000
------解决方案--------------------
探讨

引用:

VARCHAR(MAX)操作时,给其赋值的也必须是VARCHAR(MAX)的,如果用VARCHAR(N)给VARCHAR(MAX)赋值会截断的。


嗯,这个我知道额!~
  相关解决方案