是否在NULLIF()中隐式计算了算术方程

时间:2014-01-10 12:02:15

标签: sql oracle nullif

My SQL Fundamentals 1考试指南指出,

select NULLIF(1234, 123+1) from dual;
     

算术方程式未被隐式评估......

但是,当我在下面提交查询时,结果为null - 似乎评估了123 + 1 (虽然我知道查询不同)。

select NULLIF(124, 123+1) from dual;

那么,这是正确的(对于1Z0-051考试,无论如何)?是否评估了表达式?

1 个答案:

答案 0 :(得分:7)

Nullif()函数计算两个参数,如果NULL等于argument1,则返回argument2。在您的情况下,123+1不等于1234123+1等于124而不是1234

  

结果为空

在您的情况下不能null

SQL> select nullif(1234, 123+1) as res
   2    from dual;

       RES
----------
      1234



SQL> select nullif(1234, 1233+1) as res
  2    from dual
  3  ;

       RES
----------
 NULL

关注:我的2美分

以上NULLIF等同于以下情况

CASE WHEN 1234=123+1 THEN NULL ELSE 1234 END

您无法为第一个表达式指定文字NULL

同样来自documentation

  

如果两个参数都是数值数据类型,那么Oracle数据库   隐式地确定具有更高数字优先级的参数   将另一个参数转换为该数据类型,并返回该参数   数据类型。如果参数不是数字,那么它们必须是   相同的数据类型,或Oracle返回错误。