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.