小编典典

Oracle何时/为什么将NaN添加到数据库表中的行

sql

我知道NaN代表Not a Number。但是,我很难理解Oracle何时以及为何将其添加到行中。

是当它遇到小于0的值(如负数)时,还是在其为垃圾值时?


阅读 451

收藏
2021-03-23

共1个答案

小编典典

从文件

Oracle数据库数字数据类型存储正,负定点和浮点数,零,无穷大以及作为操作未定义结果的值-“非数字”或NAN

据我所知,您只能在binary_float或binary_double列中获得NaN
。这些数据类型有自己的文字楠太,并有一个is nan条件对他们来说,和nanvl()功能来操纵它们。

获取此类值的一种方法示例是将零浮点数/双精度值除以零:

select 0f/0 from dual;

0F/0
----
NaN

…因此,如果您看到NaN,则您的应用程序逻辑或基础数据可能已损坏。(请注意,您无法使用“普通”数字类型获得此值;ORA-01476: divisor is equal to zero除非分子为浮点数或双精度数,否则您将获得此值)。

但是,您不会获得零或负数的NaN。也可能有一个字符串列,并且应用程序将单词“
NaN”放入其中,但是在许多级别上将数字存储为字符串是个坏主意,因此希望不是这样。

2021-03-23