sql >> Database teknologi >  >> RDS >> Oracle

Undgå at indsætte eksponentiel værdi i DB Float-kolonnen

Den er ikke gemt som en eksponentiel, den er gemt i Oracles interne talrepræsentation. Når du forespørger på det, vises det med dine sessioners aktuelle talformat:

select 0.0000000555559080767 from dual;

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

Som du kan tilsidesætte i SQL*Plus eller SQL Developer:

set numformat 999.9999999999999999999
select 0.0000000555559080767 from dual;

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

Eller formater værdien eksplicit som en streng, kun til visning:

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

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

Hvis du har en klientapplikation, der henter og bruger værdien, skal den forespørge den som en float, til en passende datatype for klientens sprog, og så er det op til klienten, hvordan den vises.

Du bør heller ikke indsætte en streng i float-kolonnen, der kun udfører en implicit konvertering; det sidste argument i din indsættelse skal være 0.0000000555559080767 i stedet for den citerede '0.0000000555559080767' .



  1. Hvad er "rowversion" i SQL Server?

  2. Sådan genereres alle begrænsningsscripts

  3. Fik fejlen 'ugyldige gentagelsesantal(er)' fra regexp

  4. OPDATERINGER til statistik