查询1:
SQL> select nanvl(to_char(2),0) a from dual;
A
---
2
Run Code Online (Sandbox Code Playgroud)
QUERY2:
SQL> select nanvl(to_char(2),null) a from dual;
A
-----
Run Code Online (Sandbox Code Playgroud)
怀疑:
为什么第一个查询返回2?我0在查询2中期待.我很困惑.请解释让我理解.
select nanvl(to_char(2),null) a from dual;
Run Code Online (Sandbox Code Playgroud)
相当于
select nanvl('2'),null) a from dual;
Run Code Online (Sandbox Code Playgroud)
文字值“2”隐式类型转换为浮点值 2,因此 nanvl() 返回 2
尝试
select nanvl('NaN'),0) a from dual;
Run Code Online (Sandbox Code Playgroud)
这会给你 0