Que yo sepa, solo puede obtener NaN en un binary_float o binary_double
columna; esos tipos de datos tienen sus propios literales para NaN también , y hay un is nan
condición
para ellos también, y el nanvl()
función
para manipularlos.
Un ejemplo de una forma de obtener dicho valor es dividir un valor de cero flotante/doble por cero:
select 0f/0 from dual;
0F/0
----
NaN
... entonces, si ve NaN, la lógica de su aplicación o los datos subyacentes podrían estar dañados. (Tenga en cuenta que no puede obtener esto con un tipo de número 'normal'; obtiene ORA-01476: divisor is equal to zero
a menos que el numerador sea flotante o doble).
Sin embargo, no obtendrá NaN para números cero o negativos. También es posible que tenga una columna de cadena y una aplicación esté poniendo la palabra 'NaN', pero almacenar números como cadenas es una mala idea en muchos niveles, así que espero que ese no sea el caso.