Oracle之char和varchar区别及踩坑

本文详细解析了Oracle数据库中char与varchar2两种数据类型的差异,特别是在存储长度和处理空格上的不同,以及如何通过trim函数解决两者间的匹配问题。

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之间空格的坑了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微微笑再加油

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值