Voor zover ik weet kun je NaN alleen krijgen in een binary_float of binary_double
kolom; die gegevenstypen hebben ook hun eigen letterlijke waarden voor NaN , en er is een is nan
staat
ook voor hen, en de nanvl()
functie
om ze te manipuleren.
Een voorbeeld van een manier om zo'n waarde te krijgen, is door een float/double-waarde van nul te delen door nul:
select 0f/0 from dual;
0F/0
----
NaN
... dus als u NaN's ziet, is uw toepassingslogica of onderliggende gegevens mogelijk defect. (Merk op dat je dit niet kunt krijgen met een 'normaal' nummertype; je krijgt ORA-01476: divisor is equal to zero
tenzij de teller float of double is).
U krijgt echter geen NaN voor nul of negatieve getallen. Het is ook mogelijk dat je een stringkolom hebt en dat een applicatie het woord 'NaN' erin plaatst, maar het opslaan van getallen als strings is op veel niveaus een slecht idee, dus hopelijk is dat niet het geval.