问题描述:
oracle数据库中,存在两张表table1,table2。分别使用条件进行查询时,可以查询到数据,但是两张表进行关联查询,查询不到数据。
原因:
经分析后,发现造成的原因是,table1和table2中关联用到的字段,定义时使用的字段类型不一致,table1,定义为char(),table2定义为varchar2(),所以导致两个字段无法进行比较。
解决:
修改其中一张表的表结构,保持用于关联的两个字段类型一致。
注意:修改后,只对新存入表中的数据生效。
深度分析char()和varchar()和varchar2()区别:
1.char是固定长度的,例如定义char(8),插入数据为‘abc’是,存放数据时不足8位会自动不足8位。效率高(定长不会引起“行迁移”,不会造成多余的IO)
2.varchar不是固定长度,例如varchar(8),最长不能超过8位,传入多少数据就实际存放多少数据。
3.varchar2属于oracle自己开发数据类型,同义varchar,修改varchar存放空的特性,varchar2将空改成了null。