oracle char

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

猜你喜欢

转载自phrmgb.iteye.com/blog/1513098