Numerische Typen - AWS Clean Rooms

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Numerische Typen

Numerische Datentypen sind Ganzzahlen, Dezimalzahlen und Gleitkommazahlen.

Ganzzahl-Typen

Verwenden Sie die Datentypen SMALLINT, INTEGER und BIGINT, um Ganzzahlen aus verschiedenen Bereichen zu speichern. Sie können keine Werte außerhalb des zulässigen Bereichs für jeden Typ speichern.

Name Speicher Bereich
SMALLINT 2 Bytes -32768 bis +32767
INTEGER oder INT 4 Bytes -2147483648 bis +2147483647
BIGINT 8 Bytes -9223372036854775808 bis +9223372036854775807

Typ DECIMAL oder NUMERIC

Verwenden Sie den Datentyp DECIMAL oder NUMERIC, um Werte mit benutzerdefinierter Genauigkeit zu speichern. Die Schlüsselwörter DECIMAL und NUMERIC können synonym verwendet werden. In diesem Dokument wird der Begriff dezimal für diesen Datentyp bevorzugt. Der Begriff numerisch wird in der Regel als Oberbegriff für Ganzzahl-, Dezimalzahl- und Gleitkommazahl-Datentypen verwendet.

Speicher Bereich
Variabel, bis zu 128 Bits für unkomprimierte DECIMAL-Typen 128-Bit-Ganzzahlen mit Vorzeichen und einer Genauigkeit von bis zu 38 Stellen

Definieren Sie eine DECIMAL-Spalte in einer Tabelle, indem Sie die Genauigkeit (precision) und die Dezimalstellen bzw. Nachkommastellen (scale) angeben:

decimal(precision, scale)
precision

Die Anzahl aller signifikanten Stellen im gesamten Wert: die Anzahl der Stellen auf beiden Seiten des Dezimaltrennzeichens. Die Zahl 48.2891 hat z. B. eine Genauigkeit von 6 und 4 Dezimalstellen. Wenn Sie nichts angeben, wird standardmäßig eine Genauigkeit von 18 verwendet. Die maximale Genauigkeit ist 38.

Wenn die Anzahl der Ziffern links vom Dezimaltrennzeichen in einem Eingabewert die Genauigkeit der Spalte abzüglich ihrer Skalierung überschreitet, kann der Wert nicht in die Spalte kopiert (oder eingefügt oder aktualisiert) werden. Diese Regel gilt für alle Werte, die nicht innerhalb des Bereichs der Spaltendefinition liegen. Der zulässige Wertebereich für eine numeric(5,2)-Spalte erstreckt sich z. B. von -999.99 bis 999.99.

scale

Die Anzahl aller Dezimalstellen im Nachkommabereich des Wertes bzw. die Anzahl der Stellen auf der rechten Seite des Dezimaltrennzeichens. Ganzzahlen haben keine Dezimalstellen. In einer Spaltenspezifikation muss der Wert für die Dezimalstellen kleiner oder gleich dem Wert für die Genauigkeit sein. Wenn Sie nichts angeben, werden standardmäßig 0 Dezimalstellen verwendet. Es sind maximal 37 Dezimalstellen zulässig.

Wenn ein Eingabewert, der in eine Tabelle geladen wird, mehr Dezimalstellen aufweist, als für die Spalte zulässig sind, wird der Wert auf die angegebene Dezimalstelle gerundet. Die Spalte PRICEPAID in der Tabelle SALES ist z. B. eine DECIMAL(8,2)-Spalte. Wenn ein DECIMAL(8,4)-Wert in die Spalte PRICEPAID eingefügt wird, wird der Wert auf 2 Dezimalstellen gerundet.

insert into sales values (0, 8, 1, 1, 2000, 14, 5, 4323.8951, 11.00, null); select pricepaid, salesid from sales where salesid=0; pricepaid | salesid -----------+--------- 4323.90 | 0 (1 row)

Die Ergebnisse expliziter Umwandlungen von Werten, aus der Tabelle ausgewählt wurden, werden jedoch nicht gerundet.

Anmerkung

Der maximale positive Wert, der in eine DECIMAL(19,0)-Spalte eingefügt werden kann, ist 9223372036854775807 (263 -1). Die maximale negative Wert ist -9223372036854775807. Wenn versucht wird, den Wert 9999999999999999999 (19 mal die Ziffer Neun) einzufügen, wird ein Überlauffehler verursacht. Unabhängig von der Position des Dezimaltrennzeichens ist 9223372036854775807 die längste Zeichenkette, die AWS Clean Rooms als DECIMAL-Zahl darstellen kann. Der größte Wert, der in eine DECIMAL(19,18)-Spalte geladen werden kann, ist z. B. 9.223372036854775807.

Diese Regeln haben folgenden Grund:

  • DEZIMALWERTE mit einer Genauigkeit von 19 oder weniger signifikanten Stellen werden intern als 8-Byte-Ganzzahlen gespeichert.

  • DEZIMALWERTE mit einer Genauigkeit von 20 bis 38 signifikanten Stellen werden als 16-Byte-Ganzzahlen gespeichert.

Hinweise zur Verwendung von 128-Bit-DECIMAL- oder -NUMERIC-Spalten

Weisen Sie DECIMAL-Spalten nur dann maximale Genauigkeit zu, wenn Sie sicher sind, dass Ihre Anwendung diese Präzision erfordert. 128-Bit-Werte belegen doppelt so viel Speicherplatz wie 64-Bit-Werte und können zu langsameren Ausführungszeiten von Abfragen führen.

Gleitkommazahl-Typen

Verwenden Sie die Datentypen REAL oder DOUBLE PRECISION, um numerische Werte mit variabler Genauigkeit zu speichern. Diese Typen sind ungenaue Typen, d. h. manche Werte werden als Annährungen gespeichert, so dass bei der Speicherung und Rückgabe eines bestimmten Wertes leichte Abweichungen auftreten können. Wenn Sie auf genaue Speicherungen und Berechnungen zurückgreifen müssen (z. B. bei Geldbeträgen), verwenden Sie den Datentyp DECIMAL.

REAL steht für das Gleitkommaformat mit einfacher Genauigkeit gemäß dem IEEE-Standard 754 für Gleitkomma-Arithmetik. Es hat eine Genauigkeit von etwa 6 Ziffern und einen Bereich von etwa 1E-37 bis 1E+37. Sie können diesen Datentyp auch als FLOAT4 angeben.

DOUBLE PRECISION steht für das Gleitkommaformat mit doppelter Genauigkeit gemäß dem IEEE-Standard 754 für binäre Gleitkommaarithmetik. Es hat eine Genauigkeit von etwa 15 Ziffern und einen Bereich von etwa 1E-307 bis 1E+308. Sie können diesen Datentyp auch als FLOAT oder FLOAT8 angeben.