Sie können natürlich den Typ numeric
mit beliebiger Genauigkeit verwenden mit einer Genauigkeit von 5 und einer Skalierung von 1, genau wie @Simon kommentiert, aber ohne den Syntaxfehler. Verwenden Sie ein Komma (,
) anstelle des Punktes (.
) im Typmodifikator:
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
Das Minuszeichen und der Punkt im String-Literal werden nicht auf die zulässige Höchstzahl signifikanter Stellen angerechnet (precision
).
Wenn Sie die Länge nicht einschränken müssen, verwenden Sie einfach numeric
.
Wenn Sie Minimum und Maximum erzwingen müssen, fügen Sie eine Check-Einschränkung hinzu:
CHECK (nr_column BETWEEN -999.9 AND 9999.9)
numeric
speichert Ihre Nummer genau . Wenn Sie die absolute Genauigkeit nicht benötigen und kleine Rundungsfehler kein Problem darstellen, können Sie auch einen der Fließkommatypen double precision
verwenden (float8
) oder real
(float4
).
Da Sie nur eine einzelne Nachkommastelle zulassen, können Sie auch mit 10 multiplizieren und integer
verwenden , was die effizienteste Speicherung wäre:4 Bytes, keine Rundungsfehler und schnellste Verarbeitung. Verwenden und dokumentieren Sie einfach die Nummer ordnungsgemäß.
Details zu numerischen Typen im Handbuch.