PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Czy typ danych Postgres NUMERIC może przechowywać podpisane wartości?

Z pewnością możesz użyć dowolnego typu precyzji numeric z dokładnością 5 i skalą 1, tak jak skomentował @Simon, ale bez błędu składni. Użyj przecinka (, ) zamiast kropki (. ) w modyfikatorze typu:

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

Znak minus i kropka w literale ciągu nie wliczają się do dozwolonego maksimum cyfr znaczących (precision ).
Jeśli nie musisz ograniczać długości, po prostu użyj numeric .
Jeśli chcesz wymusić minimum i maksimum, dodaj ograniczenie sprawdzające:

CHECK (nr_column BETWEEN -999.9 AND 9999.9)

numeric przechowuje Twój numer dokładnie . Jeśli nie potrzebujesz bezwzględnej precyzji, a drobne błędy zaokrąglania nie stanowią problemu, możesz również użyć jednego z typów zmiennoprzecinkowych double precision (float8 ) lub real (float4 ).

Lub, ponieważ zezwalasz tylko na jedną ułamkową cyfrę dziesiętną, możesz pomnożyć przez 10 i użyć integer , która byłaby najbardziej wydajną pamięcią:4 bajty, bez błędów zaokrąglania i najszybsze przetwarzanie. Wystarczy użyć i odpowiednio udokumentować numer.

Szczegóły dotyczące typów liczb w podręczniku.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy zapytania typu SELECT są jedynym typem, który można zagnieżdżać?

  2. Jak zainstalować Postgis w instalacji beczki [email Protected] za pomocą Homebrew?

  3. sekwencja postgresql nextval w schemacie

  4. Chcę przywrócić bazę danych z innym schematem

  5. Pobieranie nazwy bieżącej funkcji wewnątrz funkcji za pomocą plpgsql