sql >> Databasteknik >  >> RDS >> Oracle

Undvik att infoga exponentiellt värde i DB Float-kolumnen

Den lagras inte som en exponentiell, den lagras i Oracles interna nummerrepresentation. När du frågar efter det, visas det med dina sessioners nuvarande nummerformat:

select 0.0000000555559080767 from dual;

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

Som du kan åsidosätta i SQL*Plus eller SQL Developer:

set numformat 999.9999999999999999999
select 0.0000000555559080767 from dual;

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

Eller formatera värdet uttryckligen som en sträng, endast för visning:

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

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

Om du har en klientapplikation som hämtar och använder värdet bör den fråga det som en flytande, till en lämplig datatyp för klientens språk, och sedan är det upp till klienten hur det visas.

Du bör inte heller infoga en sträng i floatkolumnen, det gör bara en implicit omvandling; det sista argumentet i din infogning ska vara 0.0000000555559080767 istället för den citerade '0.0000000555559080767' .



  1. Skapa ett index med flera kolumner för att framtvinga unikhet

  2. Varning:mysqli::mysqli():(HY000/1045):Åtkomst nekad för användaren 'database'@'localhost' (med lösenord:NO) i

  3. Skickar Firesbase-avisering till flera användare

  4. Butikslösenord är ok i php Sessionsvariabel?