Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Quando/por que o Oracle adiciona NaN a uma linha em uma tabela de banco de dados


Da documentação :

Tanto quanto sei, você só pode obter NaN em um binary_float ou binary_double coluna; esses tipos de dados têm seus próprios literais para NaN , e há um is nan condição para eles também, e o nanvl() função para manipulá-los.

Um exemplo de uma maneira de obter esse valor é dividir um valor zero float/double por zero:
select 0f/0 from dual;

0F/0
----
NaN  

... portanto, se você estiver vendo NaNs, sua lógica de aplicativo ou dados subjacentes podem estar quebrados. (Observe que você não pode obter isso com um tipo de número 'normal'; você obtém ORA-01476:divisor is equal to zero a menos que o numerador seja float ou double).

Você não obterá NaN para números zero ou negativos. Também é possível que você tenha uma coluna de string e um aplicativo esteja colocando a palavra 'NaN', mas armazenar números como strings é uma má ideia em muitos níveis, então espero que não seja o caso.