char(30)与varchar(30)的区别?

tianyxy 2003-11-26 10:49:39
char(30)与varchar(30)的区别?
谢谢!
...全文
1189 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2003-11-26
  • 打赏
  • 举报
回复
char(30)与varchar(30)

char(30) 不管你保存的字符数是多少,它都固定占用30个字节的存储空间
varchar(30) 只占用你保存的字符数一致的空间.


但char(30)的检索速度快过varchar(30)
tianyxy 2003-11-26
  • 打赏
  • 举报
回复
谢谢两位!
再请问friendliu(无为) ,ANSI_PADDING选项什么意思?
victorycyz 2003-11-26
  • 打赏
  • 举报
回复
char(30)占用空间更多,但是,因为长度固定,参与运算时速度更快。
friendliu 2003-11-26
  • 打赏
  • 举报
回复
char 数据类型是固定长度数据类型。如果一个比列的长度小的值被插入到 char NOT NULL 列中,则值的右边以空格填补剩余的位置。例如,如果一个列被定义为 char(10) 并且要存储的数据是"music",则 SQL Server 将这个数据存储为"music_____",这里"_"表示空格。

当创建一个 char NULL 列时,如果 ANSI_PADDING 是ON,它的表现就如同一个 char NOT NULL列:值的右边按照列的大小进行填补。当创建一个 char NULL 列时,如果 ANSI_PADDING 是 OFF,它的表现就如同一个将 ANSI_PADDING 设置为 OFF 的 varchar 列:尾随空格将被截断。

varchar 是可变长度的数据类型。比列的长度小的值,不会按照列的长度在其右边填补。当创建列时,如果 ANSI_PADDING 选项设为 OFF,则所有存储在列中的字符值的尾随空格都将被截断。当创建列时,如果 ANSI_PADDING 设为 ON,则尾随空格不被截断
victorycyz 2003-11-26
  • 打赏
  • 举报
回复
varchar存放的字符长度最大为30,可以更少。
char(30)存放的字符长度即使不足30,也会自动以空格填充左边的位置,直到30。
sunsunup 2003-11-26
  • 打赏
  • 举报
回复
char(30)与varchar(30)

char(30) 不管你保存的字符数是多少,它都固定占用30个字节的存储空间
varchar(30) 保存實際長度, 最多只占用30個字节.
char(30)的检索速度快过varchar(30)
CrazyFor 2003-11-26
  • 打赏
  • 举报
回复
char(30)与varchar(30)

char(30) 不管你保存的字符数是多少,它都固定占用30个字节的存储空间
varchar(30) 只占用你保存的字符数加一的字节空间.如:保存'A'点有两个字节
hglhyy 2003-11-26
  • 打赏
  • 举报
回复
varchar(30)存放的字符长度最大为30,可以更少。
char(30)存放的字符如果不足30,也会自动以空格来填充,直到30

资料:


字段类型
不同的字段类型用来存放不同类型的数据。创建和使用表时,更你应该理解五种常用的字段类型:字符型,文本型,数值型,逻辑性和日期型。

字符型数据
字符型数据非常有用。当你需要存储短的字符串信息时,你总是要用到字符型数据。例如,你可以把从HTML form的文本框中搜集到的信息放在字符型字段中。
要建立一个字段用来存放可变长度的字符串信息,你可以使用表达式 VARCHAR。考虑你前面创建的表guestbook:

CREATE TABLE guestbook (visitor VARCHAR(40),comments TEXT,entrydate
DATETIME)

在这个例子中,字段visitor的数据类型为VARCHAR。注意跟在数据类型后面的括号中的数字。这个数字指定了这个字段所允许存放的字符串的最大长度。在这个例子中,字段visitor能存放的字符串最长为四十个字符。如果名字太长,字符串会被截断,只保留四十个字符。
VARCHAR类型可以存储的字符串最长为255个字符。要存储更长的字符串数据,可以使用文本型数据(下一节中讲述)。
另一种字符型数据用来存储固定长度的字符数据。下面是一个使用这种数据类型的例子:

CREATE TABLE guestbook (visitor CHAR(40),comments TEXT,entrydate
DATETIME)

在这个例子中,字段visitor被用来存储四十个字符的固定长度字符串。表达式CHAR指定了这个字段应该是固定长度的字符串。
VARCHAR型和CHAR型数据的这个差别是细微的,但是非常重要。假如你向一个长度为四十个字符的VARCHAR型字段中输入数据Bill Gates。当你以后从这个字段中取出此数据时,你取出的数据其长度为十个字符——字符串Bill Gates的长度。
现在假如你把字符串输入一个长度为四十个字符的CHAR型字段中,那么当你取出数据时,所取出的数据长度将是四十个字符。字符串的后面会被附加多余的空格。
当你建立自己的站点时,你会发现使用VARCHAR型字段要比CHAR型字段方便的多。使用VARCHAR型字段时,你不需要为剪掉你数据中多余的空格而操心。
VARCHAR型字段的另一个突出的好处是它可以比CHAR型字段占用更少的内存和硬盘空间。当你的数据库很大时,这种内存和磁盘空间的节省会变得非常重要。

文本型数据
字符型数据限制了字符串的长度不能超过255个字符。而使用文本型数据,你可以存放超过二十亿个字符的字符串。当你需要存储大串的字符时,应该使用文本型数据。
这里有一个使用文本型数据的例子:

CREATE TABLE guestbook (visitor VARCHAR(40),comments TEXT,entrydate
DATETIME)

在这个例子中,字段comments被用来存放访问者对你站点的意见。注意文本型数据没有长度,而上一节中所讲的字符型数据是有长度的。一个文本型字段中的数据通常要么为空,要么很大。
当你从HTML form的多行文本编辑框(TEXTAREA)中收集数据时,你应该把收集的信息存储于文本型字段中。但是,无论何时,只要你能避免使用文本型字段,你就应该不适用它。文本型字段既大且慢,滥用文本型字段会使服务器速度变慢。文本型字段还会吃掉大量的磁盘空间。
警告:
一旦你向文本型字段中输入了任何数据(甚至是空值),就会有2K的空间被自动分配给该数据。除非删除该记录,否则你无法收回这部分存储空间。

34,623

社区成员

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

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