Per quanto ne so, puoi ottenere NaN solo in un binary_float o binary_double
colonna; questi tipi di dati hanno i propri valori letterali anche per NaN e c'è un is nan
condizione
anche per loro e il nanvl()
funzione
per manipolarli.
Un esempio di un modo per ottenere un tale valore è dividere un valore float/doppio zero per zero:
select 0f/0 from dual;
0F/0
----
NaN
... quindi se vedi NaN, la logica dell'applicazione o i dati sottostanti potrebbero essere interrotti. (Nota che non puoi ottenerlo con un tipo di numero 'normale'; ottieni ORA-01476: divisor is equal to zero
a meno che il numeratore non sia float o double).
Tuttavia, non otterrai NaN per zero o numeri negativi. È anche possibile che tu abbia una colonna di stringa e un'applicazione stia inserendo la parola "NaN", ma memorizzare i numeri come stringhe è una cattiva idea a molti livelli, quindi si spera che non sia così.