2011-01-10 3 views

Antwort

12

Siehe PostgreSQL datatypes - vielleicht Numeric, die als beliebiger Genauigkeit Typ handeln kann (dies ist eine PostgreSQL-Erweiterung).

... ohne Präzision oder Maßstab schafft eine Spalte, in der numerischen Werte aller Genauigkeit und Skalierung können gespeichert werden, bis hin zur Implementierung Grenze für Präzision.

Ich bin nicht ganz sicher, was „Implementierung Grenze für Präzision ist“, though. Habe noch nie versucht wirklich große Zahlen. Ist das Limit erreicht, ist ein Rückfall auf text möglich. Aber ich vermute, dass es vorher noch andere wichtige Probleme geben wird ;-) Wenn Sie weniger speichern möchten, geben Sie eine Genauigkeit und/oder Skalierung an numeric.

bearbeiten als sjr erwähnt, die Einschränkung 1000 Dezimalziffern Präzision ist (aus der gleichen Verbindung):

Der Typ numerischen können Nummern speichern mit bis zu 1000 Stellen genau [in Aktuelle Implementierungen] und führen Berechnungen genau durch. Es ist speziell für die Speicherung von Geldbeträgen und andere Mengen empfohlen, bei denen Genauigkeit erforderlich ist ...

Wenn mehr Präzision erforderlich ist - trotz ein viel größeres Problem bei der Hand hat - dann eine numerische Spalte wird nicht geeignet (für sich). Aber das ist wirklich eine sehr extreme "was wäre wenn" und wahrscheinlich spielt keine einschränkende Rolle.

+0

Sie haben recht, mein schlechter :) – sjr

+1

Ich habe Ihren Beitrag auf die neueste Version der Dokumentation bearbeitet. 8.2 scheint etwas veraltet;) – DrColossos

+0

@DrColossos Sehr geschätzt. –

4

Verwenden Sie einfach die Java-Mappings für die gängigen SQL-Datentypen. In diesem Fall können Sie eine NUMERIC oder DECIMAL verwenden.

+0

Das funktioniert in PostgreSQL wegen der speziellen Unterstützung. SQL selbst definiert jedoch keinen willkürlichen numerischen Genauigkeitstyp. In SQL Server beträgt die maximale Genauigkeit 38 Stellen. (Hoffentlich ist der BigDecimal-Wert garantiert in diesem Bereich zu sein :-) –

+0

Die Frage bezieht sich auf PostgreSQL, nicht auf SQL Server. NUMERIC und DECIMAL haben keine Grenzen in PostgreSQL: http://www.postgresql.org/docs/current/static/datatype-numeric.html –

+0

Sogar PostgreSQL, laut der Dokumentation, hat eine Obergrenze von 1000 Stellen der Genauigkeit. Ich musste nie Nummern irgendwo in der Nähe dieser großen verwenden, so kann ich nicht anders kommentieren. (Javas BigDecimal hat ein * viel * größeres Limit.) Der Punkt ist, dass der Raum von numerisch * kleiner * ist und obwohl ich keinen praktischen Grund kenne, ihn zu überschreiten, sollte die Tatsache nicht unerwähnt bleiben. –

Verwandte Themen