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.
Themen
Zu den Zeichendatentypen gehören die Typen CHAR (character) und VARCHAR (character varying).
Speicherung und Bereiche
Die Datentypen CHAR und VARCHAR werden in Bezug auf ihre Bytes definiert, nicht über die Zeichen. Eine CHAR-Spalte kann nur Einzelbyte-Zeichen enthalten, d. h. eine CHAR(10)-Spalte kann eine Zeichenfolge mit einer maximalen Länge von 10 Bytes enthalten. Eine VARCHAR-Spalte kann Multibyte-Zeichen bis zu einer maximalen Länge von vier Bytes pro Zeichen enthalten. Eine VARCHAR(12)-Spalte kann z. B. 12 Einzelbyte-Zeichen, 6 Zeichen mit einer Länge von je 2 Bytes, 4 Zeichen mit einer Länge von je 3 Bytes oder 3 Zeichen mit einer Länge von je 4 Bytes enthalten.
Name | Speicher | Bereich (Breite der Spalte) |
---|---|---|
CHAR, CHARACTER oder NCHAR | Länge der Zeichenfolge einschließlich der Leerzeichen am Ende (falls vorhanden) | 4096 Bytes |
VARCHAR, CHARACTER VARYING oder NVARCHAR | 4 Bytes + alle Bytes für Zeichen, wobei jedes Zeichen zwischen 1 und 4 Bytes lang ist. | 65535 Bytes (64 K -1) |
BPCHAR | Konvertiert in CHAR(256) mit fester Länge | 256 Byte |
TEXT | Konvertiert in VARCHAR(256) | 260 Bytes |
Anmerkung
Die CREATE TABLE-Syntax unterstützt das Schlüsselwort MAX für Zeichendatentypen. Beispiel:
create table test(col1 varchar(max));
Die MAX-Einstellung definiert die Breite einer Spalte als 4096 Bytes für CHAR oder 65535 Bytes für VARCHAR.
CHAR oder CHARACTER
Verwenden Sie eine CHAR- oder CHARACTER-Spalte, um Zeichenfolgen mit einer festen Länge zu speichern. Diese Zeichenfolgen werden mit Leerzeichen aufgefüllt, sodass eine CHAR(10)-Spalte immer 10 Bytes im Speicher belegt.
char(10)
Eine CHAR-Spalte ohne Längenangabe wird als CHAR(1)-Spalte umgesetzt.
VARCHAR oder CHARACTER VARYING
Verwenden Sie eine VARCHAR- oder CHARACTER VARYING-Spalte, um Zeichenfolgen mit einer variablen Länge und einem festen Grenzwert zu speichern. Diese Zeichenfolgen werden mit Leerzeichen aufgefüllt, d. h. eine VARCHAR(120)-Spalte besteht aus jeweils maximal 120 Einzelbyte-Zeichen, 60 Zeichen mit einer Länge von je 2 Bytes, 40 Zeichen mit einer Länge von je 3 Bytes oder 30 Zeichen mit einer Länge von je 4 Bytes.
varchar(120)
Wenn Sie den VARCHAR-Datentyp ohne Längenangabe in einer CREATE TABLE-Anweisung verwenden, ist die Standardlänge 256. Bei Verwendung in einem Ausdruck wird die Größe der Ausgabe anhand des Eingabeausdrucks (bis zu 65535) bestimmt.
NCHAR- und NVARCHAR-Typen
Sie können Spalten mit den Typen NCHAR und NVARCHAR erstellen (auch als NATIONAL CHARACTER- und NATIONAL CHARACTER VARYING-Typen bezeichnet). Diese Typen werden jeweils in CHAR- und VARCHAR-Typen konvertiert und in der angegebenen Anzahl von Bytes gespeichert.
Eine NCHAR-Spalte ohne Längenangabe wird in eine CHAR(1)-Spalte konvertiert.
Eine NVARCHAR-Spalte ohne Längenangabe wird in eine VARCHAR(256)-Spalte konvertiert.
TEXT- und BPCHAR-Typen
Sie können eine Amazon-Redshift-Tabelle mit einer TEXT-Spalte erstellen; diese wird jedoch in eine VARCHAR(256)-Spalte konvertiert, die Werte mit einer variablen Länge bis maximal 256 Zeichen akzeptiert.
Sie können eine Amazon-Redshift-Spalte mit dem Typ BPCHAR (blank-padded character) erstellen; diese wird von Amazon Redshift in eine CHAR(256)-Spalte mit fester Länge konvertiert.
Die Bedeutung von Leerzeichen am Ende
Die Datentypen CHAR und VARCHAR speichern Zeichenfolgen mit einer Länge von bis zu n Bytes. Jeder Versuch, eine längere Zeichenfolge in eine Spalten dieses Typs einzufügen, verursacht einen Fehler – nur wenn es sich bei den überschüssigen Zeichen um Leerzeichen handelt, wird die Zeichenfolge auf die maximal zulässige Länge gekürzt. Wenn die Zeichenfolge kürzer als die maximal zulässige Länge ist, werden CHAR-Werte mit Leerzeichen aufgefüllt; VARCHAR-Werte speichern die Zeichenfolge dagegen ohne Leerzeichen.
Leerzeichen am Ende von CHAR-Werten sind semantisch immer ohne Bedeutung. Sie werden beim Vergleich zweier CHAR-Werte ignoriert, werden bei LENGTH-Berechnungen nicht berücksichtigt und werden entfernt, wenn Sie einen CHAR-Wert in einen anderen Zeichenfolgetyp konvertieren.
Leerzeichen am Ende von VARCHAR- und CHAR- Werten werden beim Vergleich von Werten als semantisch ohne Bedeutung behandelt.
Längenberechnungen geben die Länge von VARCHAR-Zeichenfolgen einschließlich der Leerzeichen am Ende zurück. Leerzeichen am Ende werden im Fall von Zeichenfolgen mit fester Länge nicht zu der Länge gezählt.