Oracle之char和varchar区别及踩坑

char和varchar区别及踩坑
char与varchar2都是Oracle的数据存储格式。
char是定长的,varchar2是变长。都可以存储字符串。
同样存储一个字符“a”
char:占用了10个字符(a占一个,另外9个使用空格占用)
varchar2 只占用了 一个字符(注意:一个中文占两个字符/三个字符,英文占一个)。
一个中文占varchar2几个字节要根据Oracle中字符集编码决定:
1.GBK,一个汉字占用两个字节;
2.UTF8,一个汉字占用三个字节;

在项目中就遇到一个坑,子查询返回的字段是char类型,与之相等的是varchar类型

//A表中的name字段是char(10)
//B表中name字段是varchar2(10)
//子A表中的name值:a..........(点代表空格),而B表中查询出来的数据是:a
//当你用A表中是的值和B表中的值作相等的时候,a.........=a 肯定是查不出数据的
selelct * from A where name=(select name from b where id='..')

怎么解决char和varchar之间的关系呢?
使用trim:去空格

//A表中的name的值变成:a B表中的也是a,这样就能查出数据了。
selelct * from A where trim(name)=(select name from b where id='..')  

去掉空格之后,就能解决char与vachar之间空格的坑了

相关推荐
©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页