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;
}
}
2023.04.25
oracle表中,如果不小心存入了这种Double.NaN,真的很难发现,同时也很难通过什么检索条件将它找出来,什么 is nan,is NANVL(字段名,替换值),都不好使。不过,今天发现了,这个值无限逼近1,或许可以通过 >0.99999 and <1来筛选。这个9,喜欢写多少个就多少个。

浙公网安备 33010602011771号