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.