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?
没有评论:
发表评论