Autant que je sache, vous ne pouvez obtenir NaN que dans un binary_float ou binary_double
colonne; ces types de données ont leurs propres littéraux pour NaN également , et il y a un is nan
état
pour eux aussi, et le nanvl()
fonction
pour les manipuler.
Un exemple d'un moyen d'obtenir une telle valeur est de diviser une valeur flottante/double nulle par zéro :
select 0f/0 from dual;
0F/0
----
NaN
... donc si vous voyez des NaN, votre logique d'application ou vos données sous-jacentes peuvent être brisées. (Notez que vous ne pouvez pas obtenir ceci avec un type de nombre "normal" ; vous obtenez ORA-01476: divisor is equal to zero
sauf si le numérateur est float ou double).
Cependant, vous n'obtiendrez pas NaN pour des nombres nuls ou négatifs. Il est également possible que vous ayez une colonne de chaînes et qu'une application insère le mot "NaN", mais stocker des nombres sous forme de chaînes est une mauvaise idée à plusieurs niveaux, donc j'espère que ce n'est pas le cas.