char就是伪装的varchar2
char 最令人厌恶的地方是他时定长存储的,长度不足会在尾部补空格,直至满足其长度的定义
char与varchar2基础
比较规则
1 填补空格的比较规则 限于字符字面量,char和nchar变量 ,user函数的返回值
2 非填补空格的比较 varchar2 和nvarchar2采用这样的比较规则
这是出现了char令人头疼的根源
drop table t;
create table t(name char(10));
insert into t values('test');
select * from t where name='test';
drop table tt;
create table tt(name varchar2(10));
insert into tt values('test');
select * from tt where name='test';
select * from t where name in(select name from tt);
char类型遇到varchar2,总是会转换为varcahr2类型,char类型后面的空格会被保留
转换char类型的
alter table t modify name varchar2(20);
select * from t;
create table temp_tab as select trim(name) name from t;
drop table t;
rename temp_tab to t;
select * from t;
尽量不使用 char