select decode('x','x',null,d.col)
from tab d
union all
select sum(null) from dual其中tab.col字段是number型的。
但是如果换成下面就不报错:
select decode('x','x',5,null,null,d.col)
from tab d
union all
select sum(null) from dual;
这个也不报错
select null from dual
union all
select sum(null) from dual
这个单独执行也不报错
select decode('x','x',null,d.col)
from tab d为什么?
from tab d
union all
select sum(null) from dual其中tab.col字段是number型的。
但是如果换成下面就不报错:
select decode('x','x',5,null,null,d.col)
from tab d
union all
select sum(null) from dual;
这个也不报错
select null from dual
union all
select sum(null) from dual
这个单独执行也不报错
select decode('x','x',null,d.col)
from tab d为什么?
SQL> select decode('x','x',null,d.sal)
2 from emp d
3 union all
4 select sum(null) from dual;select decode('x','x',null,d.sal)
from emp d
union all
select sum(null) from dualORA-01790: 表达式必须具有与对应表达式相同的数据类型SQL>
SQL> select decode('x','x',d.sal,NULL)
2 from emp d
3 union all
4 select sum(null) from dual;DECODE('X','X',D.SAL,NULL)
--------------------------
800
1600
1250
2975
1250
2850
2450
3000
5000
1500
1100
950
3000
130015 rows selectedSQL> select decode('x','x',null,d.col)
from tab d 返回的null,类型未知。
select sum(null) from dual 返回number,故无法union all
union all下面的语句select sum(null) from dual 返回类型为number型,
而select decode('x','x',5,null,null,d.col) 返回的是null,没有类型,
虽然select sum(null) from dual的值为null,但类型还是number型
例如:
select sum(null) from dual
union all
select 1 from dual
结果:
1
2 1
select null from dual
union all
select sum(null) from dual
select decode('x','x',null,d.account_number)
from accounts d
union all
--select sum(null) from dual
--union all
select null from dual
select null from dual 返回null
select decode('x','x',null,d.col) 不确定返回类型
--------------
select decode('x','x',null,d.owner)
from dba_tables d
where rownum <10
union all
select to_char(sum(null)) from dual
-------------------
1、这个不报错:
select decode('x','x',null,d.col)
from tab d
union all
select to_char(sum(null)) from dual
2、但这个就报错了
select decode('x','x',5,d.col)
from tab d
union all
select to_char(sum(null)) from dual