sql >> Database >  >> RDS >> Oracle

Vermijd het invoegen van exponentiële waarde in de DB Float-kolom

Het wordt niet als exponentieel opgeslagen, het wordt opgeslagen in Oracle's interne nummerweergave. Wanneer u het opvraagt, wordt het weergegeven met de huidige getalnotatie van uw sessies:

select 0.0000000555559080767 from dual;

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

Die u kunt overschrijven in SQL*Plus of SQL Developer:

set numformat 999.9999999999999999999
select 0.0000000555559080767 from dual;

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

Of formatteer de waarde expliciet als een tekenreeks, alleen voor weergave:

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

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

Als u een clienttoepassing heeft die de waarde ophaalt en gebruikt, moet deze deze als een float opvragen in een geschikt gegevenstype voor de taal van de client, en dan is het aan de client hoe deze wordt weergegeven.

Je zou ook geen string in de float-kolom moeten invoegen, dat doet alleen een impliciete conversie; het laatste argument in uw invoeging moet 0.0000000555559080767 . zijn in plaats van de aangehaalde '0.0000000555559080767' .



  1. Java, hoe verander ik de huidige database in een andere?

  2. SELECTEER IN met Oracle

  3. jdbc4.MySQLSyntaxErrorException:Tabel bestaat niet in database

  4. upload een bestand naar een MySql DB met PHP