oracle中char和varchar2的区别?

zhoukan 2001-09-14 09:24:15
我建立一个数据库把所有的char字段都改成varchar2(2000)!可以吗?这样对数据库性能有什么影响?
...全文
409 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
liulee 2001-09-15
讲得很清楚了,结贴吧。
一般地,>16的长度,可以考虑用varchar2.
<=16的,建议char.

从Oracle Application的row_id属性得知。

回复
咖啡 2001-09-14
1.肯定可以;
2.对数据库肯定会有影响,但影响不大,oracle中的char类型最大长度是128,varchar2是4000多,对数据库肯定会有影响,不过现在的硬件环境都比较好,关系不会太大.
回复
tempest 2001-09-14
换掉当然好了!
char位数不够时补空格,(如果此字段作为比较、查询条件会达不到预期效果)。varchar2根据数据长度自动删减,即使定义很达空间也不会浪费!!
回复
takeiteasy 2001-09-14
定长和不定长的区别啊。如果所有的程序都不是由菜鸟写的,应该没有问题。
回复
zhuzhichao 2001-09-14
可以!
最好換掉!

char是定長
varchar2是變長.

用char會有許多預想不到的事.
比方說:
有一char(5)字段xx.
插入一個'a'.
然後用:
select length(xx) from TableName; --得出的值是5!
用varchar2就不會有該現象.

又比如:
declare v_a char(200);
v_a := 'create table a';
v_a := v_a || '(a1 int,a2 varchar2(20);';
然後用:
dbms_output.put_line(v_a); --看看v_a的值,你會大吃一驚.
居然是'create table a'
回复
pawly 2001-09-14
char类型是固定长度,如char(10),在数据库中占用10个长度,不足时,补空格,而varchar2是可变长度,存储时是输入的实际长度。
应该没有大的影响,只会对两端有空格的字段有影响,值变了
回复
goldg 2001-09-14
char确实有很多不便的地方,例如:字符窜相加的时候必须先删除空格,存储空间相对较大等。
不过char也有他存在的必要性,
一般来说,对于编码之类的,最多十几位长的用char,名称用varchar2.
回复
newskysoft 2001-09-14
char的检索速度快!
回复
pmwb 2001-09-14
vc可以空值下比CHAR好
回复
zhoukan 2001-09-14
如此的话,char字段干脆取消得拉?
我的感觉上varchar(2000)不妥!
否则
1、char 多余
2、varchar2(n)=varchar2(2000)的话,干脆varchar2就不用限制长度拉,全用varchar(2000)代替得拉???
回复
相关推荐
发帖
Sybase
创建于2007-09-28

2576

社区成员

Sybase相关技术讨论区
申请成为版主
帖子事件
创建了帖子
2001-09-14 09:24
社区公告
暂无公告