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

今天在练手的时候出现了一个ORA-01790 的错误,决定把他写下来保留起来。先来创建两张测试用的简单的表。

SQL> create table test01 (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
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论