oracle中char和varchar2的区别?

zhoukan 2001-09-14 09:24:15
我建立一个数据库把所有的char字段都改成varchar2(2000)!可以吗?这样对数据库性能有什么影响?
...全文
453 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
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)代替得拉???

2,596

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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