sql >> Databasteknik >  >> RDS >> Oracle

När/varför lägger Oracle till NaN till en rad i en databastabell

Från dokumentationen :

Så vitt jag är medveten om kan du bara få NaN i en binary_float eller binary_double kolumn; dessa datatyper har sina egna bokstaver för NaN också , och det finns en is nan skick för dem också, och nanvl() funktion att manipulera dem.

Ett exempel på ett sätt att få ett sådant värde är att dividera ett nollflytande/dubbelt värde med noll:

select 0f/0 from dual;

0F/0
----
NaN  

... så om du ser NaNs kan din applikationslogik eller underliggande data vara trasiga. (Observera att du inte kan få detta med en 'normal' taltyp; du får ORA-01476:divisor är lika med noll om inte täljaren är flytande eller dubbel).

Du kommer dock inte att få NaN för noll eller negativa tal. Det är också möjligt att du har en strängkolumn och ett program lägger in ordet 'NaN', men att lagra siffror som strängar är en dålig idé på många nivåer, så förhoppningsvis är det inte fallet.



  1. Fel i Oracle PL/SQL-proceduren

  2. Konvertera nummer till datum i oracle

  3. Anslut MS SQL Server-databas till Oracle 11g-databas

  4. ExecuteNonQuery() för Insert