sql >> Database >  >> RDS >> Oracle

Wanneer/Waarom voegt Oracle NaN toe aan een rij in een databasetabel?

Uit de documentatie :

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.



  1. Net/ssh/gateway gebruiken om een ​​ssh-tunnel tot stand te brengen naar mysql

  2. Hoe subquery te gebruiken om Mysql SELECT LIMIT offset te definiëren?

  3. vergelijk waarde met alle velden van een tabel in mysql

  4. Inleiding tot IRI Voracity (Total Data Management) [video]