日期:2014-05-18  浏览次数:20663 次

verchar与text数据类型选择
存储的字符串变长,但<8000,是不是最好用text类型?
如果设定了某字段为varchar(100),是不是不管插入的字符串实际为多少,占用空间都为100?
【SQL Server 2000】

------解决方案--------------------
如果是文章之类的用text比较好
------解决方案--------------------
存储的字符串变长,但 <8000,是不是最好用text类型?
如果设定了某字段为varchar(100),是不是不管插入的字符串实际为多少,占用空间都为100?

varchar 有长度限制,如果定义为100, 超过就会插入失败. 如果小于100,还是会分配100的存储空间.

text 定长,16 实际上只存储了一些...这个用个什么词来说呢, 定义了一些类似于地址之类的信息,或者说一些对应实际内容的索引信息. 通过这里的信息定位具体内容的位置.
就像 access和fox之类的备注型一样. 理论学的不好,讲的可能不科学,将就看吧,能说明意思就是了.
------解决方案--------------------
存储的字符串变长,但 <8000,是不是最好用text类型?
如果设定了某字段为varchar(100),是不是不管插入的字符串实际为多少,占用空间都为100?
【SQL Server 2000】

---------------------

在 2005 里,不知道大家又没有留意,MS建议程序员慎用text/ntext,image类型数据,将来会用varchar(max)/nvarchar(max)替代这些类型。

varchar变长,char定长,这里的变长/定长,不是存储空间或内存空间意义上的变长/定长,而是datalength意义上的变长/定长。

某字段为varchar(100),存储空间肯定要100。但对该字段执行datalength,返回字符串的实际存储长度<=100(变长)。但如果是char(100),datalength全部返回100(定长)。

------解决方案--------------------
text型编辑麻烦呀,用varchar多好呀,当然,如果不改的话,用text好些.
------解决方案--------------------
如果是varchar(100)就是字符串的长度不能超过100
------解决方案--------------------
如果是varchar(100)就是字符串的存儲长度不能超过100字節