Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wann/Warum fügt Oracle einer Zeile in einer Datenbanktabelle NaN hinzu

Aus der Dokumentation :

Soweit mir bekannt ist, können Sie NaN nur in einem binary_float oder binary_double Säule; diese Datentypen haben ihre eigenen Literale auch für NaN , und es gibt einen is nan Bedingung auch für sie und den nanvl() Funktion sie zu manipulieren.

Ein Beispiel für einen solchen Wert ist die Division eines Null-Float/Double-Werts durch Null:

select 0f/0 from dual;

0F/0
----
NaN  

... Wenn Sie also NaNs sehen, könnten Ihre Anwendungslogik oder die zugrunde liegenden Daten beschädigt sein. (Beachten Sie, dass Sie dies nicht mit einem "normalen" Zahlentyp erhalten können; Sie erhalten ORA-01476: divisor is equal to zero es sei denn, der Zähler ist Float oder Double).

Sie erhalten NaN jedoch nicht für null oder negative Zahlen. Es ist auch möglich, dass Sie eine Zeichenfolgenspalte haben und eine Anwendung das Wort „NaN“ einfügt, aber das Speichern von Zahlen als Zeichenfolgen ist auf vielen Ebenen eine schlechte Idee, also ist das hoffentlich nicht der Fall.