Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Hindari memasukkan nilai eksponensial di kolom DB Float

Itu tidak disimpan sebagai eksponensial, itu disimpan dalam representasi nomor internal Oracle. Saat Anda menanyakannya, itu ditampilkan dengan format nomor sesi Anda saat ini:

select 0.0000000555559080767 from dual;

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

Yang dapat Anda timpa di SQL*Plus atau SQL Developer:

set numformat 999.9999999999999999999
select 0.0000000555559080767 from dual;

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

Atau format nilai secara eksplisit sebagai string, hanya untuk tampilan:

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

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

Jika Anda memiliki aplikasi klien yang mengambil dan menggunakan nilai, maka aplikasi tersebut harus menanyakannya sebagai float, menjadi tipe data yang sesuai untuk bahasa klien, dan terserah klien bagaimana menampilkannya.

Anda juga tidak boleh memasukkan string ke dalam kolom float, yang hanya melakukan konversi implisit; argumen terakhir di sisipan Anda harus 0.0000000555559080767 daripada '0.0000000555559080767' . yang dikutip .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pilih subquery yang mengembalikan beberapa baris sebagai string (satu kolom) dalam tabel (Oracle SQL)

  2. Konversi Epoch ke tanggal di sqlplus / Oracle

  3. Penyetelan kinerja pernyataan DECODE() dalam klausa WHERE

  4. 2PL, Model Ketat vs Ketat, Apakah Ada Manfaatnya?

  5. Mengonversi antar klausa menjadi gabungan