我的SQL基础知识1考试指南指出,
Run Code Online (Sandbox Code Playgroud)select NULLIF(1234, 123+1) from dual;算术方程没有被隐含地评估......
然而,当我提交的结果下面的查询是null-它似乎是123 + 1 的评价(虽然我知道查询是不同的).
select NULLIF(124, 123+1) from dual;
Run Code Online (Sandbox Code Playgroud)
那么,这是正确的(对于1Z0-051考试,无论如何)?表达式是否被评估?
Nullif()函数计算两个参数,NULL如果argument1等于则返回argument2.在你的情况下123+1不等于1234.123+1等于124没有1234.
结果为null
它不能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
Run Code Online (Sandbox Code Playgroud)
关注:我的2美分
以上NULLIF等同于以下情况
CASE WHEN 1234=123+1 THEN NULL ELSE 1234 END
Run Code Online (Sandbox Code Playgroud)
您不能NULL为第一个表达式指定文字.
也来自文档
如果两个参数都是数值数据类型,则Oracle数据库确定具有较高数字优先级的参数,隐式将另一个参数转换为该数据类型,并返回该数据类型.如果参数不是数字,则它们必须具有相同的数据类型,否则Oracle将返回错误.