sql >> Database teknologi >  >> RDS >> Oracle

Hvornår/Hvorfor tilføjer Oracle NaN til en række i en databasetabel

Fra dokumentationen :

Så vidt jeg ved kan du kun få NaN i en binær_float eller binær_dobbelt kolonne; disse datatyper har også deres egne bogstaver for NaN , og der er en is nan tilstand også for dem, og nanvl() funktion at manipulere dem.

Et eksempel på en måde at få en sådan værdi på er at dividere en float/dobbelt værdi med nul:

select 0f/0 from dual;

0F/0
----
NaN  

... så hvis du ser NaNs, kan din applikationslogik eller underliggende data være ødelagt. (Bemærk, at du ikke kan få dette med en 'normal' taltype; du får ORA-01476:divisor er lig med nul medmindre tælleren er flydende eller dobbelt).

Du får dog ikke NaN for nul eller negative tal. Det er også muligt, at du har en strengkolonne, og en applikation sætter ordet 'NaN' ind, men at gemme tal som strenge er en dårlig idé på mange niveauer, så det er forhåbentlig ikke tilfældet.



  1. Laravel:hvordan tilføjes hvor-klausul ved hjælp af forespørgselsbyggeren?

  2. MySQL-casting af -1 returnerer 18446744073709551615

  3. PostgreSQL bigserial &nextval

  4. Hvordan opretter jeg en brugerdefineret funktion i AWS Aurora RDS Postgres