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

本应该说两张表结构不相似的或者表结构相似但数据类型不相同两个表或者多个表不能进行

集合查询操作。我们通过以下的测试表明:不同表结构的两个或多个表之间不能进行集合操作,

但是数据类型不相同的两个或多个表之间通过转换函数把字段的数据类型统一后,可以进行

集合查询操作。

----尝试两张不同表结构的表或者相同字段数不同数据类型的两个表进行集合插叙:

--查看测试表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条记录。

--所以,当两个表或者多个表有着相同字段数的时候,当进行集合操作时,

需要把对应的的字段数据类型转化成相同的数据类型,长度不严格要求。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值