2014年9月22日星期一

oracle的null

with
t as
(
select '' x from dual
union all
select null  from dual
union all
select 'a' from dual
)
select * from t
where x <> ''

这个语句,没有返回a的记录,因为''直接被转换为NULL处理了,这么想可以理解。

但是下面的语句就奇怪了

select nullif(null, 'a') x from dual
这句会报错,因为var1是null,不明确数据类型。

select nullif(to_char(null), 'a') x from dual
这句可以执行,用to_char告诉oracle是字符串

select nullif(to_number(null), 0) x from dual
这句会报错,为啥??

另外nvl(null, 0), nvl(null, 'a')都不会报错,为啥nullif却要明确指定to_char?

没有评论:

发表评论