sql >> Databáze >  >> RDS >> PostgreSQL

Může datový typ Postgres NUMERIC ukládat podepsané hodnoty?

Určitě můžete použít libovolný typ přesnosti numeric s přesností 5 a stupnicí 1, stejně jako to komentoval @Simon, ale bez syntaktické chyby. Použijte čárku (, ) místo tečky (. ) v modifikátoru 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

Znaménko mínus a tečka v řetězcovém literálu se nezapočítávají do povoleného maxima platných číslic (precision ).
Pokud nepotřebujete omezit délku, stačí použít numeric .
Pokud potřebujete vynutit minimum a maximum, přidejte kontrolní omezení:

CHECK (nr_column BETWEEN -999.9 AND 9999.9)

numeric uloží vaše číslo přesně . Pokud nepotřebujete absolutní přesnost a drobné chyby zaokrouhlení nepředstavují žádný problém, můžete také použít jeden z typů s plovoucí desetinnou čárkou double precision (float8 ) nebo real (float4 ).

Nebo, protože povolujete pouze jednu desetinnou číslici, můžete vynásobit 10 a použít integer , což by bylo nejefektivnější úložiště:4 bajty, žádné zaokrouhlovací chyby a nejrychlejší zpracování. Stačí číslo správně použít a zdokumentovat.

Podrobnosti pro číselné typy v příručce.




  1. Obnovte svou databázi WordPress pomocí WP-CLI

  2. JSON_STORAGE_FREE() – Zjistěte, kolik úložného prostoru bylo uvolněno po aktualizaci dokumentu JSON v MySQL

  3. SQL nezobrazuje hodnoty null v dotazu nerovná se?

  4. PostgreSQL:jak převést z epochy Unixu na datum?