PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Може ли типът данни на Postgres NUMERIC да съхранява подписани стойности?

Със сигурност можете да използвате произволния тип прецизност numeric с точност от 5 и скала от 1, точно както коментира @Simon, но без синтактична грешка. Използвайте запетая (, ) вместо точката (. ) в модификатора на типа:

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

Знакът минус и точката в литерала на низа не се отчитат от разрешения максимум значими цифри (precision ).
Ако не е необходимо да ограничавате дължината, просто използвайте numeric .
Ако трябва да наложите минимум и максимум, добавете ограничение за проверка:

CHECK (nr_column BETWEEN -999.9 AND 9999.9)

numeric съхранява вашия номер точно . Ако не се нуждаете от абсолютна прецизност и малки грешки при закръгляването не са проблем, можете също да използвате един от типовете с плаваща запетая double precision (float8 ) или real (float4 ).

Или, тъй като допускате само една дробна десетична цифра, можете да умножите по 10 и да използвате integer , което би било най-ефективното съхранение:4 байта, без грешки при закръгляване и най-бърза обработка. Просто използвайте и документирайте номера правилно.

Подробности за цифровите типове в ръководството.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Редовен израз в клауза LIKE на PostgreSQL

  2. инсталация на postgres, инициализацията на клъстера на базата данни е неуспешна (Postgresql версия 9.4.4)

  3. Вземете стойности от първия и последния ред за група

  4. Анотацията на Spring Data @CreatedDate не работи за мен

  5. Изпълнете PostgreSQL .sql файл с помощта на аргументи на командния ред