sql >> Databáze >  >> RDS >> Oracle

Kdy/proč Oracle přidává NaN do řádku v databázové tabulce

Z dokumentace :

Pokud je mi známo, můžete NaN získat pouze v binary_float nebo binary_double sloupec; tyto datové typy mají své vlastní literály i pro NaN a je zde je nan stav i pro ně a nanvl() funkce manipulovat s nimi.

Příkladem způsobu, jak získat takovou hodnotu, je vydělení nulové float/double hodnoty nulou:

select 0f/0 from dual;

0F/0
----
NaN  

... takže pokud vidíte NaN, vaše aplikační logika nebo základní data mohou být narušeny. (Všimněte si, že to nemůžete získat s „normálním“ typem čísla; dostanete ORA-01476:dělitel je roven nule pokud není čitatel plovoucí nebo dvojitý).

Pro nula nebo záporná čísla však NaN nedostanete. Je také možné, že máte sloupec řetězce a aplikace do něj vkládá slovo 'NaN', ale ukládání čísel jako řetězců je na mnoha úrovních špatný nápad, takže doufejme, že tomu tak není.



  1. Jak formulovat dotaz pro zobrazení všech kurzů, které osoba absolvovala

  2. OpenSSL - chyba 18 při vyhledávání hloubky 0:certifikát s vlastním podpisem

  3. Velký primární klíč:1+ miliarda řádků MySQL + InnoDB?

  4. Změní změna časového pásma MySQL hodnoty polí DateTime v databázi?