Oracle关联查询时对关联字段的数据类型要求
在ORACLE中进行关联查询时,作为关联查询的两字段数据类型要一至,否则会报:
ORA
-
01722
:invalid
number
这样的错误,如下查询语句:
select
*
from
A a,B b
where
a.loginid
=
b.userid;
如果a.loginid的数据类型为:number(n),而b.userid的数据类型为:varchar2(n),则会报上面的错误,要二者为同一数据类型,上面的查询语句才能正确的被执行,平时可能在做一些查询统计时没注意这些问题(可能表结构是别人事先已经建好了的,而我们只是去使用而于),所以当我们在设计表结构时,如果以后某两表(或多表)之间存在关联关系,即查询相关数据时,要关联它们之间的某些字段,这时我们就要注意了,要将到时可能用于关联查询的字段的数据类型设计为相同的类型,当然字段长度可以不一样,这样到时关联查询时就不会有问题了,否则以后还要改字段数据类型,而且此时表中又有了数据,为了防止数据丢失,改起来还有点麻烦.
这种问题在ORACLE关系数据库中会出现,在其它关系数据库中不知道会不会出现,猜测可能也会有类似问题.
注: 这可能是一个很简单的问题,但这确可能是很容易忽视的问题,有时在设计表结构时,可能会由于考虑不周,造成以后要关联查询相关数据时出现上面的错误,从而要去改变表的字段类型,从而带来一些不必要的麻烦.