Oracle 关联查不到数据

背景

测试跟我说,他导入了数据,但是我并没有将数据显示出来。于是我把语句抓了出来,就两个表关联查询数据,我用了left join但是就是没有数据,但两个表单独查询又都有数据,简直见鬼了。其实这种情况,一般就是数据里多了空格之类的。但是我两个表的唯一标识是一样的,就这么一个关联条件,居然还这样,真是够了。

问题

-- a,b 可以理解为Table1,Table2的外号
-- id是a,b表的栏位名称,且两边数据都相等
-- left join...on...去看看数据库的笛卡尔积吧
select b.* from table1 a left join table2  b on a.id=b.id;

CHAR和VARCHAR

后面经发现,确实是数据有问题,但是关键是数据里有空格,可即便这样我用没有空格的查询条件能查出来,用加了空格的也能,就是系统自带把后面的空格去掉了。

一个表建的是CHAR类型,一个是VARCHAR类型的,char类型的查询就自动把后面的屏蔽还是怎么的,反正就是能查出来。

char类型的数据,我建了长度17,但实际值只有16位(有的也有17位),后一位就补空格了;但是VARCHAR不会给你补空格,将长度全占满

总结

如果你的数据长度是固定的,且跟建的栏位长度也是相同的,用CHAR就不会有什么问题,但是你要是不一致,还是用VARCHAR还是VARCHAR2来着,都可以。据说 CHAR和VARCHAR之间有点性能差距,但对我这种能用的人来说,过多的追求性能,可能会导致一堆bug。不过以后慢慢学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值