ORA-01790 错误处理_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2212 | 回复: 0   主题: ORA-01790 错误处理        下一篇 
dansmall
注册用户
等级:新兵
经验:52
发帖:71
精华:0
注册:2011-10-27
状态:离线
发送短消息息给dansmall 加好友    发送短消息息给dansmall 发消息
发表于: IP:您无权察看 2015-9-23 14:16:25 | [全部帖] [楼主帖] 楼主

先来创建两张测试用的简单的表。

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



--转自



赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论