PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bisakah tipe data Postgres NUMERIC menyimpan nilai yang ditandatangani?

Anda pasti dapat menggunakan tipe presisi arbitrer numeric dengan presisi 5 dan skala 1, seperti komentar @Simon, tetapi tanpa kesalahan sintaks. Gunakan koma(, ) bukannya titik (. ) di pengubah tipe:

SELECT numeric(5,1) '-999.9' AS nr_lower
     , numeric(5,1) '9999.9' AS nr_upper;

 nr_lower | nr_upper
----------+----------
   -999.9 |   9999.9

Tanda minus dan titik dalam literal string tidak dihitung terhadap digit signifikan maksimum yang diizinkan (precision ).
Jika Anda tidak perlu membatasi panjangnya, cukup gunakan numeric .
Jika Anda perlu menerapkan minimum dan maksimum, tambahkan batasan centang:

CHECK (nr_column BETWEEN -999.9 AND 9999.9)

numeric menyimpan nomor Anda dengan tepat . Jika Anda tidak memerlukan presisi mutlak dan kesalahan pembulatan kecil tidak masalah, Anda juga dapat menggunakan salah satu jenis titik mengambang double precision (float8 ) atau real (float4 ).

Atau, karena Anda hanya mengizinkan satu digit desimal pecahan, Anda dapat mengalikannya dengan 10 dan menggunakan integer , yang akan menjadi penyimpanan paling efisien:4 byte, tanpa kesalahan pembulatan, dan pemrosesan tercepat. Cukup gunakan dan dokumentasikan nomornya dengan benar.

Detail untuk tipe numerik dalam manual.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Setel ulang kunci utama PostgreSQL ke 1

  2. Tes IS NOT NULL untuk catatan tidak mengembalikan TRUE ketika variabel disetel

  3. Roda bangunan gagal untuk psycopg2 - MacOSX menggunakan virtualenv dan pip

  4. Rails dan PostgreSQL:Peran postgres tidak ada

  5. Setara dengan PostgreSQL untuk TOP n WITH TIES:LIMIT with ties?