oracle字段存入NaN值后查询显示为0问题

Posted 左直拳

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle字段存入NaN值后查询显示为0问题相关的知识,希望对你有一定的参考价值。

今天发现了一件古怪的事情。C#代码运算过程中,不小心将一个Number型字段赋了NaN值,并保存到数据库,之后NHibernate就无法构造这条记录对应的对象了,提示什么

NHibernate.Exceptions.GenericADOException
  HResult=0x80131600
  Message=could not initialize a collection:

查阅数据库,如果用pl/sql developer,可以看到该字段显示为0,然后,它实际上又不等于0:
1、在pl/sql developer中,查询结果为0

2、实际上,它不等于0:

3、它好像是大于0:

4、它好像又不是NaN

5、在sqlplus中,它查询结果为空:

6、所以,它究竟是什么?

实在搞不懂,只好先记下来,转头去研究茴香豆的茴字,究竟有多少种写法。至于代码中,我暂时在实体类中加了防御:

double? tide_abs_rate1;
public virtual double? Tide_abs_rate1

    get
    
        return tide_abs_rate1;
    
    set
    
        tide_abs_rate1 = (value is Double.NaN) ? 0 : value;
    

以上是关于oracle字段存入NaN值后查询显示为0问题的主要内容,如果未能解决你的问题,请参考以下文章

oracle 查询某个字段有多条

为啥我在更改 NaN 值后得到 RecursionError

如何才能把java日期类型存入oracle数据库

小数点后面的0取不到 oracle数据库的字段类型为number(10,2)

如何在Oracle数据库查询中为没有数据的字段赋值为NULL

关于sql模糊查询(全字段)