Numerische Typen - Amazon Redshift

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 für die einzelnen Typen keine Werte außerhalb des zulässigen Bereichs speichern.

Name Speicher Bereich
SMALLINT oder INT2 2 Bytes -32768 bis +32767
INTEGER, INT oder INT4 4 Bytes -2147483648 bis +2147483647
BIGINT oder INT8 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 Stellen auf der linken Seite des Dezimaltrennzeichens in einem Eingabewert die Genauigkeit der Spalte minus der Dezimalstellen überschreitet, kann der Wert nicht in die Spalte kopiert 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 die längste Zeichenkette, die Amazon Redshift als DECIMAL-Zahl darstellen kann 9223372036854775807. Der größte Wert, der in eine DECIMAL(19,18)-Spalte geladen werden kann, ist z. B. 9.223372036854775807.

Diese Regeln gelten, da DECIMAL-Werte mit einer Genauigkeit von 19 oder weniger signifikanten Stellen intern als 8-Byte-Ganzzahlen gespeichert werden, während DECIMAL-Werte mit einer Genauigkeit von 20 bis 38 signifikanten Stellen als 16-Byte-Ganzzahlen gespeichert werden.

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 binäre Gleitkommaarithmetik. 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.

Zusätzlich zu den gewöhnlichen numerischen Werten haben Gleitkommatypen mehrere spezielle Werte. Verwenden Sie einfache Anführungszeichen bei diesen Werten, wenn Sie sie in SQL verwenden:

  • NaN – not-a-number

  • Infinity – unendlich

  • -Infinity – negativ unendlich

Um beispielsweise not-a-number in die Spalte day_charge der Tabelle einzufügen, customer_activity führen Sie die folgende SQL-Anweisung aus:

insert into customer_activity(day_charge) values('NaN');