Oracle
 sql >> Base de données >  >> RDS >> Oracle

Évitez d'insérer une valeur exponentielle dans la colonne DB Float

Il n'est pas stocké sous forme d'exponentiel, il est stocké dans la représentation numérique interne d'Oracle. Lorsque vous l'interrogez, il s'affiche avec le format numérique actuel de vos sessions :

select 0.0000000555559080767 from dual;

                  0.0000000555559080767
---------------------------------------
                                5.6E-08

Que vous pouvez remplacer dans SQL*Plus ou SQL Developer :

set numformat 999.9999999999999999999
select 0.0000000555559080767 from dual;

   0.0000000555559080767
------------------------
    .0000000555559080767

Ou formatez explicitement la valeur sous forme de chaîne, pour l'affichage uniquement :

set numf ""
select to_char(0.0000000555559080767, '9990.9999999999999999999') from dual;

TO_CHAR(0.000000055555908
-------------------------
    0.0000000555559080767

Si vous avez une application cliente qui récupère et utilise la valeur, elle doit l'interroger sous forme de flotteur, dans un type de données adapté à la langue du client, puis c'est au client de décider comment elle s'affiche.

Vous ne devriez pas non plus insérer de chaîne dans la colonne flottante, cela ne fait qu'une conversion implicite; le dernier argument de votre insert doit être 0.0000000555559080767 plutôt que le guillemet '0.0000000555559080767' .