本应该说两张表结构不相似的或者表结构相似但数据类型不相同两个表或者多个表不能进行
集合查询操作。我们通过以下的测试表明:不同表结构的两个或多个表之间不能进行集合操作,
但是数据类型不相同的两个或多个表之间通过转换函数把字段的数据类型统一后,可以进行
集合查询操作。
----尝试两张不同表结构的表或者相同字段数不同数据类型的两个表进行集合插叙:
--查看测试表t_iot结构与记录:
suxing@PROD>desc T_IOT
Name Null? Type
----------------------------------------- -------- ----------------------------
COL1 NOT NULL VARCHAR2(10)
COL2 NOT NULL VARCHAR2(20)
suxing@PROD>select * from T_IOT;
COL1 COL2
---------- --------------------
susky guanghzou
susu beijing
susu guanghzou
--查看测试表yourtest结构与记录:
suxing@PROD>desc yourtest;
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NUMBER(3)
NAME VARCHAR2(6)
CREATED DATE
suxing@PROD>select * from yourtest;
ID NAME CREATED
---------- ------ ---------
125 susu 02-NOV-16
123 susky 02-NOV-16
124 hhhh 10-NOV-16
126 wwww 10-NOV-16
125 dddd 11-NOV-16
---尝试进行union all集合查询:
suxing@PROD>select * from t_iot
2 union all
3 select * from yourtest;
select * from t_iot
*
ERROR at line 1:
ORA-01789: query block has incorrect number of result columns
---创建一个测试表:
suxing@PROD>create table mytest
2 as select name,created
3 from yourtest;
Table created.
--查看表结构与记录:
suxing@PROD>desc mytest;
Name Null? Type
----------------------------------------- -------- ----------------------------
NAME VARCHAR2(6)
CREATED DATE
suxing@PROD>select * from mytest;
NAME CREATED
------ ---------
susu 02-NOV-16
susky 02-NOV-16
hhhh 10-NOV-16
wwww 10-NOV-16
dddd 11-NOV-16
---尝试再次进行union all集合查询:
suxing@PROD>select * from t_iot
2 union all
3 select * from mytest;
select * from t_iot
*
ERROR at line 1:
ORA-01790: expression must have same datatype as corresponding expression
#要求对应字段的数据类型要一致。
---通过查询转化created字段的数据类型并进行union all集合查询:
suxing@PROD>select * from t_iot
2 union all
3 select name,to_char(created) from mytest;
COL1 COL2
---------- --------------------
susky guanghzou
susu beijing
susu guanghzou
susu 02-NOV-16
susky 02-NOV-16
hhhh 10-NOV-16
wwww 10-NOV-16
dddd 11-NOV-16
8 rows selected.
#返回8条记录。
--所以,当两个表或者多个表有着相同字段数的时候,当进行集合操作时,
需要把对应的的字段数据类型转化成相同的数据类型,长度不严格要求。