关于sql server中Varchar长度的问题!

haoma2514 2010-07-07 04:36:49
今天在做项目时发现的问题。 我在数据库中定义了一个varcahr(2000)的字段,用来保存信件内容,后来我copy了一封长度为4000左右文字的信件添加到数据库中,没想到提示要截取字符串。。

一直以为varchar的长度是可以自动增长的,我就没去想数据库中的问题。弄了半天,原来就是数据库中定义时的原因。把varchar类型的那个字段改成varchar(8000),没点问题了。


问题是解决了,只是不知道一直以来听说的varchar自动增长是什么概念?我脑中varchar的概念是这样的:
varchar : 8000个字符,最大长度, 定义时可以设置在8000以下,比如varchar(100)之类的。这样如果你插入的内容大于100,则这个字段会自动增加长度用来满足插入字段的大小。因为varchar是自动变长的嘛。

小妹愚钝,望好心学长诚心指点!
...全文
1581 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
clm4519 2010-10-18
  • 打赏
  • 举报
回复
这也是我不理解的……学到了。。。
lijianchun1988 2010-10-09
  • 打赏
  • 举报
回复
原来如此啊。呵呵,我和楼主理解的一样。大错特错。
Qyin2009and2010 2010-09-30
  • 打赏
  • 举报
回复
学习了~嘿嘿……
namoemitoufo 2010-08-23
  • 打赏
  • 举报
回复 1
varchar的变长是针对char而言的,

char(100) 无论你的数据是多少,都要占用100字节空间
varchar(100) 根据数据占用字节空间
varcahr(2000)是指最大存储2000字节,但实际存多少就占多少空间,这个应该就是你说的自动增长
前方 2010-08-23
  • 打赏
  • 举报
回复
恩。说的很详细
douraymi 2010-07-14
  • 打赏
  • 举报
回复
学习了 哈哈
gloomybima 2010-07-07
  • 打赏
  • 举报
回复
学习了~
ask_chang 2010-07-07
  • 打赏
  • 举报
回复
在sql 2005
varchar(max)
在sql 2000
varchar(8000)或者text
swallow1210 2010-07-07
  • 打赏
  • 举报
回复
varchar后面的长度是你给定的最大长度,实质占用你空间的是数据本身的长度,但是给定的空间必须不能小于那数据的长度。
永生天地 2010-07-07
  • 打赏
  • 举报
回复
varchar的变长是针对char而言的,

char(100) 无论你的数据是多少,都要占用100字节空间
varchar(100) 根据数据占用字节空间
-狙击手- 2010-07-07
  • 打赏
  • 举报
回复
你理解错了,你的2000表示最大就是2000
guguda2008 2010-07-07
  • 打赏
  • 举报
回复
varcahr(2000)是指最大存储2000字节,但实际存多少就占多少空间,这个应该就是你说的自动增长

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧