Du kan helt sikkert bruge den vilkårlige præcisionstype numeric
med en præcision på 5 og en skala på 1, ligesom @Simon kommenterede, men uden syntaksfejlen. Brug et komma(,
) i stedet for prikken (.
) i typemodifikatoren:
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
Minustegnet og prikken i strengen literal tæller ikke med i det tilladte maksimum af signifikante cifre (precision
).
Hvis du ikke behøver at begrænse længden, skal du blot bruge numeric
.
Hvis du har brug for at håndhæve minimum og maksimum, skal du tilføje en kontrolbegrænsning:
CHECK (nr_column BETWEEN -999.9 AND 9999.9)
numeric
gemmer dit nummer præcis . Hvis du ikke har brug for den absolutte præcision, og små afrundingsfejl er ikke noget problem, kan du også bruge en af flydende kommatyperne double precision
(float8
) eller real
(float4
).
Eller da du kun tillader et enkelt brøkdecimalciffer, kan du gange med 10 og bruge integer
, som ville være den mest effektive lagring:4 bytes, ingen afrundingsfejl og hurtigste behandling. Bare brug og dokumenter nummeret korrekt.
Detaljer for numeriske typer i manualen.