当前位置: 代码迷 >> Sql Server >> 问个关于varchar数据类型的有关问题
  详细解决方案

问个关于varchar数据类型的有关问题

热度:80   发布时间:2016-04-24 09:40:47.0
问个关于varchar数据类型的问题
看过好多书和资料都说varchar是可变类型 当长度不够了会自动增加
但是我用UPDATE往一个varchar(20)里写数据的 提示“将截断字符串或二进制数据”,我吧VARHCAR(20)改成
VARHCAR(100)就顺利执行过了,
请问这是什么情况
------解决思路----------------------
看过好多书和资料都说varchar是可变类型 当长度不够了会自动增加
书本应该是说随着字符串长度的改变,长度会随着改变吧
比如定义一个字段 sname varchar(20),如果是‘张三丰’ 占6个长度,如果是'肖邦'就只分配4个长度,这样根据字段值变换分配长度,可以节约存储空间,并不是说字段值超过20个长度,也会自动增长!
------解决思路----------------------
引用:
看过好多书和资料都说varchar是可变类型 当长度不够了会自动增加
但是我用UPDATE往一个varchar(20)里写数据的 提示“将截断字符串或二进制数据”,我吧VARHCAR(20)改成
VARHCAR(100)就顺利执行过了,
请问这是什么情况


所说的可变,是指在你定义的长度范围内是可变的,你定义一个 varchar(20) , 这里的 20 是最大长度,你写入一个 长为 10 的字符串,他就占用了 10 字节的空间,你更新成了一个长度为 5 的串,他就占 5 个字节的长度。

你可以结合  char(20) ,来比较一下

char(20) 你写了一个长度为 10 的串,他前位是你的串内容,后10位是空格,总共 20 位,也就是大家常说的定长。
  相关解决方案