社区
MS-SQL Server
帖子详情
还是CHAR和VARCHAR问题
ytzyf
2003-08-22 09:21:17
char(10) 长度为固定长度
varchar(10) 存储大小为输入数据的的实际长度
为什么不都用varchar呢?还节省空间,存储实际长度。
例如
cName char(10)
vName varchar(10)
完全可以用varchar(10),为什么很多书上例子都是用char(10)?
...全文
50
10
打赏
收藏
还是CHAR和VARCHAR问题
char(10) 长度为固定长度 varchar(10) 存储大小为输入数据的的实际长度 为什么不都用varchar呢?还节省空间,存储实际长度。 例如 cName char(10) vName varchar(10) 完全可以用varchar(10),为什么很多书上例子都是用char(10)?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jiangchuandong
2003-08-23
打赏
举报
回复
gz,
to:Rayfly(小鸡快跑) ,varchar也可以做到呀
个人认为varchar比char好用多了
z5wjz
2003-08-23
打赏
举报
回复
varchar数据类型虽然可以节省磁盘空间,但存在降低性能的隐患,举个简单的例子:一张表上有一列为通讯地址,因为长度相差比较大,所以只好选择varchar或nvarchar数据类型,假设长度为80,而如果有一个人的通讯地址开始时只输入了"北京市"三个字,则这个人的地址一列只占用了6个字节.
数据库中的数据是以页的形式存储的,一页为8K字节,假设存储上面那个人的那行记录的页刚好存满,页面上已无可用空间或可用空间非常小,并且后来要修改这个人的地址,改成一个比较长的数据,如:北京市宣武区某某街道某某胡同某某号,此时就会出现问题了,因为存储该条记录的页已被占满,所以只好将该条记录从这一页上删除,将其修正后的结果存到另一可用页上,而为了仍然能够找到该数据,需要在原始位置加一个指针,指向现在的数据存储位置.如果类似操作过多,会在表上生成大量的数据指针,很明显会降低性能.(当然了,可以通过其他方法来将其优化,这里只是一个小小的例子而已)
上述所产生的现象虽然不能完全归罪于varchar数据类型,但也跟他有着密切的关系,因为如果采用定长数据类型就不会出现这样的问题.
所以在可以使用定长数据类型时尽量使用,而变长数据类型请尽量在数据长度变化较大时采用.
Rayfly
2003-08-23
打赏
举报
回复
比如说一个单位的资产编号定义是:“xxxx0000xx”,这就需要数据长度一致啦
sdhdy
2003-08-23
打赏
举报
回复
在下认为:
如果数据长度可以确定的话,用char比较好,可以节省存储开支
如果数据长度不定的话,用varchar比较好,可以存储实际长度,但未必可以节省存储空间。
ytzyf
2003-08-23
打赏
举报
回复
up
ytzyf
2003-08-22
打赏
举报
回复
请问,数据长度一致有什么用处吗??
zhaoloudy
2003-08-22
打赏
举报
回复
补充:一般来说,服务器操作char比varchar要快。
nboys
2003-08-22
打赏
举报
回复
用char类型,保证所有的数据长度都一致,比如char(10),那么长度都是十
用varchar类型,可以节省空间
ytzyf
2003-08-22
打赏
举报
回复
如果希望列中的数据值大小接近一致,请使用 char。
如果希望列中的数据值大小显著不同,请使用 varchar。
什么意思??不太明白
hjb111
2003-08-22
打赏
举报
回复
char 和 varchar
固定长度 (char) 或可变长度 (varchar) 字符数据类型。
char[(n)]
长度为 n 个字节的固定长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为 n 个字节。char 在 SQL-92 中的同义词为 character。
varchar[(n)]
长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。varchar 在 SQL-92 中的同义词为 char varying 或 character varying。
注释
如果没有在数据定义或变量声明语句中指定 n,则默认长度为 1。如果没有使用 CAST 函数指定 n,则默认长度为 30。
将为使用 char 或 varchar 的对象被指派数据库的默认排序规则,除非用 COLLATE 子句另外指派了特定的排序规则。该排序规则控制用于存储字符数据的代码页。
支持多语言的站点应考虑使用 Unicode nchar 或 nvarchar 数据类型以尽量减少字符转换问题。如果使用 char 或 varchar:
如果希望列中的数据值大小接近一致,请使用 char。
如果希望列中的数据值大小显著不同,请使用 varchar。
如果执行 CREATE TABLE 或 ALTER TABLE 时 SET ANSI_PADDING 为 OFF,则一个定义为 NULL 的 char 列将被作为 varchar 处理。
当排序规则代码页使用双字节字符时,存储大小仍然为 n 个字节。根据字符串的不同,n 个字节的存储大小可能小于 n 个字符。
char
、
var
char
、
var
char
2区别
char
var
char
var
char
2 的区别 区别: 1.
CHAR
的长度是固定的,而
VAR
CHAR
2的长度是可以变化的, 比如,存储字符串“abc",对于
CHAR
(20),表示你存储的字符将占20个字节(包括17个空字符),而同样的
VAR
CHAR
2 (20)...
详解:
Char
和
var
Char
之间的区别
MySQL中的字符串有两个常用的类型:
char
和
var
char
,二者各有优势,下面我们来详细分析一下。 通常在建表的时候对于String 类型的数据定义我们或许会很纠结 : 什么时候用
char
什么时候用
var
char
呢? 首先可以...
char
和
var
char
,text的区别
1.在MySQL中,
char
、
var
char
和text类型的字段都可以用来存储字符类型的数据,
char
、
var
char
都可以指定最大的字符长度,但text不可以。 2.存储方式和检索方式 存储方式和数据的检索方式也都不一样。 3.按照查询速度:...
char
和
var
char
区别
char
和
var
char
区别 1、最大长度:
char
最大长度是255字符,
var
char
最大长度是65535个字节。2、定长:
char
是定长的,不足的部分用隐藏空格填充,
var
char
是不定长的。3、空间使用:
char
会浪费空间,
var
char
会更加节省...
char
和
var
char
简单比较
char
和
var
char
MS-SQL Server
34,587
社区成员
254,588
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章