U kunt zeker het willekeurige precisietype numeric
. gebruiken met een precisie van 5 en een schaal van 1, net zoals @Simon opmerkte, maar zonder de syntaxisfout. Gebruik een komma(,
) in plaats van de punt (.
) in de typemodifier:
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
Het minteken en de punt in de letterlijke tekenreeks tellen niet mee voor het toegestane maximum van significante cijfers (precision
).
Als u de lengte niet hoeft te beperken, gebruikt u gewoon numeric
.
Als je minimum en maximum moet afdwingen, voeg dan een controlebeperking toe:
CHECK (nr_column BETWEEN -999.9 AND 9999.9)
numeric
slaat uw nummer exact op . Als je de absolute precisie niet nodig hebt en kleine afrondingsfouten geen probleem zijn, kun je ook een van de drijvende-kommatypes gebruiken double precision
(float8
) of real
(float4
).
Of, aangezien u slechts één decimaal cijfer achter de komma toestaat, kunt u vermenigvuldigen met 10 en integer
gebruiken , wat de meest efficiënte opslag zou zijn:4 bytes, geen afrondingsfouten en snelste verwerking. Gebruik en documenteer het nummer gewoon goed.
Details voor numerieke typen in de handleiding.