oracle union caluse:如果列名不匹配会发生什么

Vic*_*tor 2 sql oracle

在oracle中,当我这样做时:从table1中选择table1.col1,从table2中选择table2.col2

它给了我所有记录的并集,结果列的名称是col1.

由于列名不匹配,不应该抛出错误吗?

Jus*_*ave 6

只要列数据类型不匹配,列名将始终来自第一个查询.它不应该(并且,正如您所发现的那样)不会抛出错误.

如果数据类型不匹配,即使可以进行隐式转换,通常也会出现错误

SQL> /
select 1 a from dual union select '2' from dual
       *
ERROR at line 1:
ORA-01790: expression must have same datatype as corresponding expression

SQL> /
select '1' a from dual union select 2 from dual
       *
ERROR at line 1:
ORA-01790: expression must have same datatype as corresponding expression
Run Code Online (Sandbox Code Playgroud)