Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Kiedy/dlaczego Oracle dodaje NaN do wiersza w tabeli bazy danych?

Z dokumentacji :

O ile mi wiadomo, NaN można uzyskać tylko w binary_float lub binary_double kolumna; te typy danych mają własne literały również dla NaN i istnieje is nan warunek dla nich też, a nanvl() funkcja by nimi manipulować.

Przykładem sposobu na uzyskanie takiej wartości jest podzielenie zerowej wartości zmiennoprzecinkowej/podwójnej przez zero:

select 0f/0 from dual;

0F/0
----
NaN  

... więc jeśli widzisz NaNs, logika aplikacji lub podstawowe dane mogą być uszkodzone. (Zauważ, że nie możesz tego uzyskać przy "normalnym" typie liczby; otrzymujesz ORA-01476:dzielnik jest równy zero chyba że licznik jest zmiennoprzecinkowy lub podwójny).

Nie otrzymasz jednak NaN dla liczb zerowych lub ujemnych. Możliwe jest również, że masz kolumnę ciągów, a aplikacja umieszcza w niej słowo „NaN”, ale przechowywanie liczb w postaci ciągów jest złym pomysłem na wielu poziomach, więc miejmy nadzieję, że tak nie jest.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Znajdź wyciek połączenia w aplikacji Java

  2. Wyzwanie testowania bazy danych Oracle — Porównaj dane schematu

  3. Połącz bazę danych MS SQL Server z bazą danych Oracle 11g

  4. Procedura wywoływania w wierzchołku oracle

  5. jak pobrać dane z jednej kolumny z jednej tabeli do innej tabeli jako różne kolumny w PL/SQL?