My SQL Fundamentals 1 Exam Guide 指出,
select NULLIF(1234, 123+1) from dual;
算术方程没有被隐式评估......
但是,当我提交下面的查询时,结果是-null
似乎评估了 123+1 (尽管我知道查询是不同的)。
select NULLIF(124, 123+1) from dual;
那么,哪个是正确的(无论如何,对于 1Z0-051 考试)?表达式是否被评估?
Nullif()
函数计算两个参数,NULL
如果argument1
等于则返回argument2
。在你的情况下123+1
不等于1234
. 123+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
为第一个表达式指定文字。
也来自文档
如果两个参数都是数字数据类型,则 Oracle 数据库确定具有较高数字优先级的参数,将另一个参数隐式转换为该数据类型,并返回该数据类型。如果参数不是数字,那么它们必须是相同的数据类型,否则 Oracle 会返回错误。