我知道 NaN 代表非数字。但是,我很难理解 Oracle 何时以及为何将其添加到一行中。
是遇到小于 0 的值(如负数)还是垃圾值时。
从文档中:
Oracle 数据库数字数据类型存储正负定点和浮点数、零、无穷大以及作为未定义运算结果的值(“不是数字”或NAN
.
据我所知,你只能在 a 中得到 NaN二进制浮点型或二进制双精度型柱子;这些数据类型有他们自己的 NaN 字面量,并且有一个is nan状况对他们来说也是如此,而且nanvl()功能来操纵他们。
获取此类值的方法示例是将零浮点/双精度值除以零:
select 0f/0 from dual;
0F/0
----
NaN
...因此,如果您看到 NaN,您的应用程序逻辑或底层数据可能会被破坏。 (请注意,您无法使用“正常”数字类型获得此值;您会得到ORA-01476: divisor is equal to zero
除非分子是 float 或 double)。
不过,零或负数不会得到 NaN。也有可能您有一个字符串列,并且应用程序将单词“NaN”放入其中,但将数字存储为字符串在很多层面上都是一个坏主意,所以希望情况并非如此。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)