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。不过以后慢慢学习。

猜你喜欢

转载自blog.csdn.net/qq_41128526/article/details/124475221