ITPub博客

首页 > 数据库 > Oracle > 不同表结构或者不同数据类型之间的集合操作

不同表结构或者不同数据类型之间的集合操作

原创 Oracle 作者:skyin_1603 时间:2016-11-15 14:10:22 0 删除 编辑

本应该说两张表结构不相似的或者表结构相似但数据类型不相同两个表或者多个表不能进行
集合查询操作。我们通过以下的测试表明:不同表结构的两个或多个表之间不能进行集合操作,
但是数据类型不相同的两个或多个表之间通过转换函数把字段的数据类型统一后,可以进行
集合查询操作。

----尝试两张不同表结构的表或者相同字段数不同数据类型的两个表进行集合插叙:
--查看测试表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条记录。

--所以,当两个表或者多个表有着相同字段数的时候,当进行集合操作时,
需要把对应的的字段数据类型转化成相同的数据类型,长度不严格要求。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31392094/viewspace-2128505/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2016-09-06

  • 博文量
    231
  • 访问量
    215133