Datentypen - 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.

Datentypen

Jeder Wert, den Amazon Redshift speichert oder abruft, gehört zu einem Datentyp mit einem festen Satz von Eigenschaften. Datentypen werden deklariert, wenn Tabellen erstellt werden. Eine Datentyp beschränkt die Gruppe von Werten, den eine Spalte oder ein Argument enthalten kann.

In der folgenden Tabelle sind alle Datentypen aufgeführt, die Sie in Amazon-Redshift-Tabellen verwenden können.

Datentyp Aliasnamen Beschreibung
SMALLINT INT2 2-Byte-Ganzzahl mit Vorzeichen
INTEGER INT, INT4 4-Byte-Ganzzahl mit Vorzeichen
BIGINT INT8 8-Byte-Ganzzahl mit Vorzeichen
DECIMAL NUMERIC Genauer Zahlenwert mit wählbarer Genauigkeit
REAL FLOAT4 Gleitkommazahl mit einfacher Genauigkeit
DOUBLE PRECISION FLOAT8, FLOAT Gleitkommazahl mit doppelter Genauigkeit
CHAR CHARACTER, NCHAR, BPCHAR Zeichenfolge mit fester Länge
VARCHAR CHARACTER VARYING, NVARCHAR, TEXT Zeichenfolge mit variabler Länge und benutzerdefiniertem Grenzwert
DATUM Kalenderdatum (Jahr, Monat, Tag)
TIME TIME WITHOUT TIME ZONE Uhrzeit
TIMETZ TIME WITH TIME ZONE Uhrzeit mit Zeitzone
TIMESTAMP (ZEITSTEMPEL) TIMESTAMP WITHOUT TIME ZONE Datum und Uhrzeit (ohne Zeitzone)
TIMESTAMPTZ TIMESTAMP WITH TIME ZONE Datum und Uhrzeit (mit Zeitzone)
INTERVAL YEAR TO MONTH Zeitdauer in der Reihenfolge von Jahr zu Monat
INTERVAL DAY TO SECOND Zeitdauer in der Reihenfolge von Tag bis zur zweiten
BOOLEAN BOOL Logischer/Boolescher Wert (wahr/falsch)
HLLSKETCH Typ, der für HyperLogLog Skizzen verwendet wird.
SUPER Ein übergeordneter Datentyp, der alle skalaren Typen von Amazon Redshift umfasst, einschließlich komplexer Typen wie ARRAY und STRUCTS.
VARBYTE VARBINARY, BINARY VARYING Binärwert mit variabler Länge
GEOMETRY Geodaten
GEOGRAPHY Geodaten
Anmerkung

Weitere Informationen über nicht unterstützte Datentypen wie „char“ (dieser Datentyp steht in Anführungszeichen) finden Sie unter Nicht unterstützte PostgreSQL-Datentypen.

Multibyte-Zeichen

Der Datentyp VARCHAR unterstützt Multibyte-UTF-8-Zeichen mit einer Länge von bis zu vier Bytes. Zeichen mit einer Länge von fünf Bytes oder mehr werden nicht unterstützt. Sie berechnen die Größe einer VARCHAR-Spalte, die Multibyte-Zeichen enthält, indem Sie die Anzahl der Zeichen mit der Anzahl der Bytes pro Zeichen multiplizieren. Wenn eine Zeichenfolge z. B. vier chinesischen Zeichen enthält und jedes Zeichen drei Bytes lang ist, dann ist eine VARCHAR(12)-Spalte erforderlich, um die Zeichenfolge zu speichern.

Der Datentyp VARCHAR bietet keine Unterstützung für die folgenden ungültigen UTF-8-Codepunkte:

0xD800 – 0xDFFF (Bytesequenzen: ED A0 80ED BF BF)

Der Datentyp CHAR bietet keine Unterstützung für Multibyte-Zeichen.

Kompatibilität von Typen und Umwandlung zwischen Typen

Im Folgenden finden Sie eine Erläuterung der Funktionsweise der Regeln zur Umwandlung von Typen und zur Kompatibilität zwischen Datentypen in Amazon Redshift.

Kompatibilität

Es gibt verschiedene Datenbankoperationen, bei denen die Datentypen passend gemacht und den Literalwerten und Konstanten Datentypen zugewiesen werden. Hierzu gehören die folgenden:

  • DML- (Data Manipulation Language-)Operationen über Tabellen

  • UNION-, INTERSECT- und EXCEPT-Abfragen

  • CASE-Ausdrücke

  • Auswertung von Prädikaten wie LIKE oder IN

  • Auswertung von SQL-Funktionen, bei denen Vergleiche durchgeführt oder Daten extrahiert werden

  • Vergleiche mit mathematischen Operatoren

Die Ergebnisse dieser Operationen hängen von den Regeln zur Umwandlung von Typen und der Kompatibilität zwischen Datentypen ab. Kompatibilität bedeutet, dass ein one-to-one Abgleich eines bestimmten Werts und eines bestimmten Datentyps nicht immer erforderlich ist. Da bestimmte Datentypen untereinander kompatibel sind, ist eine implizite Umwandlung (englisch coercion) möglich. Weitere Informationen finden Sie unter Arten von impliziter Umwandlung. Wenn Datentypen inkompatibel sind, können Sie manchmal einen Wert in einen anderen Datentyp umwandeln, indem Sie eine explizite Typumwandlungsfunktion verwenden.

Allgemeine Regeln zur Kompatibilität und zur Umwandlung

Beachten Sie die folgenden Regeln zur Kompatibilität und zur Typumwandlung:

  • Datentypen aus derselben Kategorie sind i. d. R. miteinander kompatibel und können implizit ineinander konvertiert werden. Ein Beispiel hierfür sind numerische Datentypen.

    Sie können beispielsweise mit einer impliziten Umwandlung einen Dezimalwert in eine Spalte mit Ganzzahlen einfügen. Dabei werden Dezimalwerte auf eine Ganzzahl gerundet. Sie können auch einen Zahlenwert wie 2008 aus einem Datum extrahieren und den Wert in eine ganzzahlige Spalte einfügen.

  • Numerische Datentypen erzwingen Überlaufbedingungen, die auftreten, wenn Sie versuchen, out-of-range Werte einzufügen. Beispielsweise passt ein Dezimalwert mit einer Genauigkeit von 5 Stellen nicht in eine Dezimalspalte mit einer Genauigkeit von 4 Stellen. Eine Ganzzahl bzw. der ganzzahlige Anteil einer Dezimalzahl wird nie abgeschnitten. Hingegen kann können die Nachkommastellen von Dezimalzahlen bei Bedarf auf- oder abgerundet werden. Die Ergebnisse expliziter Umwandlungen von Werten, aus der Tabelle ausgewählt wurden, werden jedoch nicht gerundet.

  • Unterschiedliche Arten von Zeichenfolgen sind miteinander kompatibel. Zeichenfolgen in VARCHAR-Spalten, die Einzelbytedaten enthalten und Zeichenfolgen in CHAR-Spalten können miteinander verglichen und implizit konvertiert werden. VARCHAR-Zeichenfolgen mit Multibytedaten können nicht mit CHAR-Spalten verglichen werden. Sie können eine Zeichenfolge in ein Datum, eine Uhrzeit, einen Zeitstempel oder einen Zahlenwert umwandeln, wenn die Zeichenfolge einen gültigen Literalwert darstellt. Leerzeichen am Anfang und am Ende der Zeichenfolge werden dabei ignoriert. Umgekehrt können Sie auch ein Datum, eine Uhrzeit, einen Zeitstempel oder einen Zahlenwert in eine Zeichenfolge mit fester oder variabler Länge konvertieren.

    Anmerkung

    Wenn Sie eine Zeichenfolge in einen numerischen Typ umwandeln möchten, muss die Zeichenfolge die Zeichendarstellung einer Zahl sein. Sie können beispielsweise die Zeichenfolgen '1.0' und '5.9' in Dezimalwerte konvertieren, 'ABC' hingegen in keinen numerischen Typ.

  • Wenn Sie DECIMAL-Werte mit Zeichenfolgen vergleichen, versucht Amazon Redshift, die Zeichenfolge in einen DECIMAL-Wert umzuwandeln. Wenn Sie alle anderen numerischen Werte mit Zeichenfolgen vergleichen, werden die numerischen Werte in Zeichenfolgen konvertiert. Um eine Konvertierung in der Gegenrichtung zu erreichen (beispielsweise Zeichenfolgen in Ganzzahlen oder DECIMAL-Werte in Zahlenfolgen umzuwandeln), müssen Sie eine explizite Funktion wie beispielsweise CAST verwenden.

  • Wenn Sie einen 64-Bit-Wert vom Typ DECIMAL oder NUMERIC in einen Typ mit einer höheren Genauigkeit umwandeln möchten, müssen Sie eine explizite Funktion verwenden, beispielsweise CAST oder CONVERT.

  • Wenn Sie DATE oder TIMESTAMP in TIMESTAMPTZ konvertieren oder TIME in TIMETZ konvertieren, wird die Zeitzone auf die Zeitzone der aktuellen Sitzung festgelegt. Standardmäßig ist als Zeitzone für Sitzungen UTC festgelegt. Weitere Informationen zum Festlegen der Zeitzone für Sitzungen finden Sie unter Zeitzone.

  • Analog dazu wird auch TIMESTAMPTZ auf der Grundlage der Zeitzone der aktuellen Sitzung in DATE, TIME oder TIMESTAMP konvertiert. Standardmäßig ist als Zeitzone für Sitzungen UTC festgelegt. Die Zeitzoneninformationen werden nach der Konvertierung wieder entfernt.

  • Zeichenfolgen, die einen Zeitstempel mit angegebener Zeitzone darstellen, werden unter Verwendung der Zeitzone der aktuellen Sitzung in TIMESTAMPTZ konvertiert. Diese ist standardmäßig UTC. Zeichenfolgen, die eine Uhrzeit mit angegebener Zeitzone darstellen, werden unter Verwendung der Zeitzone der aktuellen Sitzung in TIMETZ konvertiert. Diese ist standardmäßig UTC.

Arten von impliziter Umwandlung

Es gibt zwei Arten von impliziten Typumwandlungen:

  • Implizite Umwandlung bei der Zuweisung, beispielsweise bei der Zuweisung von Werten in INSERT- oder UPDATE-Befehlen.

  • Implizite Umwandlung in Ausdrücken, beispielsweise bei Vergleichen in der WHERE-Klausel.

In der folgenden Tabelle sind die Datentypen aufgelistet, die eine implizite Konvertierung in Zuweisungen oder Ausdrücken ermöglichen. Sie können diese Konvertierungen auch mit expliziten Umwandlungsfunktionen durchführen.

Von Typ Zu Typ
BIGINT (INT8) BOOLEAN
CHAR
DECIMAL (NUMERIC)
DOUBLE PRECISION (FLOAT8)
INTEGER (INT, INT4)
REAL (FLOAT4)
SMALLINT (INT2)
VARCHAR
CHAR VARCHAR
DATUM CHAR
VARCHAR
TIMESTAMP
TIMESTAMPTZ
DECIMAL (NUMERIC) BIGINT (INT8)
CHAR
DOUBLE PRECISION (FLOAT8)
INTEGER (INT, INT4)
REAL (FLOAT4)
SMALLINT (INT2)
VARCHAR
DOUBLE PRECISION (FLOAT8) BIGINT (INT8)
CHAR
DECIMAL (NUMERIC)
INTEGER (INT, INT4)
REAL (FLOAT4)
SMALLINT (INT2)
VARCHAR
INTEGER (INT, INT4) BIGINT (INT8)
BOOLEAN
CHAR
DECIMAL (NUMERIC)
DOUBLE PRECISION (FLOAT8)
REAL (FLOAT4)
SMALLINT (INT2)
VARCHAR
REAL (FLOAT4) BIGINT (INT8)
CHAR
DECIMAL (NUMERIC)
INTEGER (INT, INT4)
SMALLINT (INT2)
VARCHAR
SMALLINT (INT2) BIGINT (INT8)
BOOLEAN
CHAR
DECIMAL (NUMERIC)
DOUBLE PRECISION (FLOAT8)
INTEGER (INT, INT4)
REAL (FLOAT4)
VARCHAR
TIMESTAMP CHAR
DATUM
VARCHAR
TIMESTAMPTZ
TIME
TIMESTAMPTZ CHAR
DATUM
VARCHAR
TIMESTAMP
TIMETZ
TIME VARCHAR
TIMETZ
INTERVAL DAY TO SECOND
TIMETZ VARCHAR
TIME
GEOMETRY GEOGRAPHY
GEOGRAPHY GEOMETRY
Anmerkung

Bei impliziten Typumwandlungen zwischen TIMESTAMPTZ, TIMESTAMP, DATE, TIME, TIMETZ oder Zeichenfolgen wird die Zeitzone der aktuellen Sitzung verwendet. Weitere Informationen zum Festlegen der aktuellen Zeitzone finden Sie unter Zeitzone.

Die Datentypen GEOMETRY und GEOGRAPHY können nicht implizit in einen anderen Datentyp umgewandelt werden (außer untereinander). Weitere Informationen finden Sie unter CAST-Funktion.

Der Datentyp VARBYTE kann nicht implizit in einen anderen Datentyp umgewandelt werden. Weitere Informationen finden Sie unter CAST-Funktion.

Verwenden der dynamischen Typisierung für den SUPER-Datentyp

Amazon Redshift verwendet die dynamische Typisierung, um schemalose SUPER-Daten zu verarbeiten, ohne dass die Datentypen deklariert werden müssen, bevor Sie sie in Ihrer Abfrage verwenden. Bei der dynamischen Typisierung werden die Ergebnisse der Navigation in SUPER-Datenspalten verwendet, ohne sie explizit in Amazon-Redshift-Typen umwandeln zu müssen. Weitere Informationen zur Verwendung der dynamischen Typisierung für SUPER Datentypen finden Sie unter Dynamische Typisierung.

Sie können SUPER-Werte in andere Datentypen umwandeln und umgekehrt, mit einigen Ausnahmen. Weitere Informationen finden Sie unter Einschränkungen.