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 BIGINT Datentypen SMALLINTINTEGER, und, um ganze Zahlen verschiedener Bereiche zu speichern. Sie können für die einzelnen Typen keine Werte außerhalb des zulässigen Bereichs speichern.

Name Speicher Bereich
SMALLINToder INT2 2 Bytes -32768 bis +32767
INTEGER,INT, oder INT4 4 Bytes -2147483648 bis +2147483647
BIGINToder INT8 8 Bytes -9223372036854775808 bis +9223372036854775807

DECIMALoder NUMERIC geben Sie ein

Verwenden Sie den NUMERIC Datentyp DECIMAL oder, um Werte mit einer benutzerdefinierten Genauigkeit zu speichern. Die NUMERIC Schlüsselwörter DECIMAL und sind austauschbar. 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 Bit für unkomprimierte TypenDECIMAL. 128-Bit-Ganzzahlen mit Vorzeichen und einer Genauigkeit von bis zu 38 Stellen

Definieren Sie eine DECIMAL Spalte in einer Tabelle, indem Sie eine Genauigkeit und einen Maßstab 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 PRICEPAID Spalte in der SALES Tabelle ist beispielsweise eine DECIMAL (8,2) -Spalte. Wenn ein Wert DECIMAL (8,4) in die PRICEPAID Spalte eingefügt wird, wird der Wert auf eine Skala von 2 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, den Sie in eine Spalte DECIMAL (19,0) einfügen können, ist 9223372036854775807 (2 63 -1). Die maximale negative Wert ist -9223372036854775808. Wenn versucht wird, den Wert 9999999999999999999 (19 mal die Ziffer Neun) einzufügen, wird ein Überlauffehler verursacht. Unabhängig von der Platzierung des Dezimaltrennzeichens ist 9223372036854775807 die größte Zeichenfolge, die Amazon Redshift als DECIMAL Zahl darstellen kann. Der größte Wert, den Sie in eine Spalte DECIMAL (19,18) laden können, ist beispielsweise. 9.223372036854775807

Diese Regeln basieren darauf, dass 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 oder Spalten DECIMAL NUMERIC

Weisen Sie DECIMAL Spalten nicht willkürlich maximale Genauigkeit zu, es sei denn, Sie sind sich sicher, dass Ihre Anwendung diese Genauigkeit erfordert. 128-Bit-Werte belegen doppelt so viel Festplattenspeicher wie 64-Bit-Werte und können die Ausführungszeit von Abfragen verlangsamen.

Gleitkommazahl-Typen

Verwenden Sie die DOUBLE PRECISION Datentypen REAL und, 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 exakte Speicherung und Berechnungen benötigen (z. B. für Geldbeträge), verwenden Sie den DECIMAL Datentyp.

REALsteht für das Gleitkommaformat mit einfacher Genauigkeit gemäß dem IEEE Standard 754 für binäre 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 angeben. FLOAT4

DOUBLEPRECISIONsteht für das Gleitkommaformat mit doppelter Genauigkeit gemäß dem IEEE Standard 754 für binäre Gleitkomma-Arithmetik. 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 oder angeben. FLOAT FLOAT8

Zusätzlich zu den gewöhnlichen numerischen Werten haben Gleitkommatypen mehrere spezielle Werte. Verwenden Sie einfache Anführungszeichen um diese Werte, wenn Sie sie verwenden inSQL:

  • NaN – not-a-number

  • Infinity – unendlich

  • -Infinity – negativ unendlich

Um beispielsweise not-a-number in eine Tabellenspalte day_charge einzufügen, gehen customer_activity Sie wie folgt vorSQL:

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