先来创建两张测试用的简单的表。
SQL>
createtabletest01 (id number(3),name
varchar2(12));
Table
created.
SQL> create
table test02 (id varchar2(6),name
varchar2(12));
Table
created.
分别插入一条记录用来测试。
SQL> insert into
test01 values (100,'baidu');
1 row
created.
SQL> insert into
test02 values ('101','sina');
1 row
created.
SQL>
commit;
Commit
complete.
执行带union 或者union all
的语句。
SQL> select
id,name from test01
2
union
3
select id,name from test02;
select id,name from
test01
*
ERROR at line
1:
ORA-01790: expression must have
same datatype as corresponding expression
出现上述错误的原因是因为 test01 中的id
列的定义是number,而test02 中id
列的定义是varchar2。所以在union 或者union all
的时候造成了数据类型不一致。
出现上述错误应该根据不同的情况使用不同类型转换函数,比如to_char,to_number,to_date
改写上面的语句:
SQL> select
to_char(id) as id,name from test01
2
union
3
select id,name from test02;
ID NAME
----------------------------------------
------------
100 baidu
101 sina
--转自