Zusammenfassung: In diesem Tutorial lernen Sie die PostgreSQL-Zeichendatentypen CHAR
, VARCHAR
und TEXT
kennen und erfahren, wie Sie die richtigen Zeichentypen für Ihre Tabellen auswählen.
Einführung in die PostgreSQL-Zeichentypen
PostgreSQL bietet drei primäre Zeichentypen: CHARACTER(n)
oder CHAR(n)
, CHARACTER VARYINGING(n)
oder VARCHAR(n)
, und TEXT
, wobei n
eine positive ganze Zahl ist.
Die folgende Tabelle stellt die Zeichentypen in PostgreSQL dar:
Zeichentypen | Beschreibung |
CHARACTER VARYING(n) , VARCHAR(n) |
variable-Länge mit Längenbegrenzung |
CHARACTER(n) , CHAR(n) |
feste Länge, leer aufgefüllt |
TEXT , VARCHAR |
variable unbegrenzte Länge |
Beide CHAR(n)
und VARCHAR(n)
können bis zu n
Zeichen speichern. Wenn Sie versuchen, eine Zeichenkette mit mehr als n
Zeichen zu speichern, gibt PostgreSQL einen Fehler aus.
Eine Ausnahme ist jedoch, dass PostgreSQL die Leerzeichen auf die maximale Länge (n
) abschneidet und die Zeichen speichert, wenn die überzähligen Zeichen alle Leerzeichen sind.
Wenn eine Zeichenkette explizit in ein CHAR(n)
oder VARCHAR(n)
gecastet wird, schneidet PostgreSQL die Zeichenkette auf n
Zeichen ab, bevor sie in die Tabelle eingefügt wird.
Der TEXT
-Datentyp kann eine Zeichenkette mit unbegrenzter Länge speichern.
Wenn Sie die Ganzzahl n für den VARCHAR
-Datentyp nicht angeben, verhält er sich wie der TEXT
-Datentyp. Die Leistung von VARCHAR
(ohne die Größe n
) und TEXT
ist die gleiche.
Der einzige Vorteil der Angabe der Längenangabe für den Datentyp VARCHAR
ist, dass PostgreSQL einen Fehler ausgibt, wenn Sie versuchen, eine Zeichenkette mit mehr als n
Zeichen in die Spalte VARCHAR(n)
einzufügen.
Im Gegensatz zu VARCHAR
ist CHARACTER
oder CHAR
ohne Längenangabe (n
) dasselbe wie CHARACTER(1)
oder CHAR(1)
.
Im Gegensatz zu anderen Datenbanksystemen gibt es in PostgreSQL keinen Leistungsunterschied zwischen den drei Zeichentypen.
In den meisten Fällen sollten Sie TEXT
oder VARCHAR
verwenden. Und Sie verwenden VARCHAR(n)
, wenn Sie möchten, dass PostgreSQL die Länge überprüft.
PostgreSQL-Zeichentyp-Beispiele
Schauen wir uns ein Beispiel an, um zu sehen, wie die Datentypen CHAR
, VARCHAR
und TEXT
funktionieren.
Erstellen Sie zunächst eine neue Tabelle mit dem Namen character_tests:
Code language: SQL (Structured Query Language) (sql)
Fügen Sie dann eine neue Zeile in die Tabelle character_tests
ein.
Code language: SQL (Structured Query Language) (sql)
PostgreSQL gibt einen Fehler aus:
Code language: SQL (Structured Query Language) (sql)
Das liegt daran, dass der Datentyp der Spalte x
char(1)
ist und wir versucht haben, eine Zeichenfolge mit drei Zeichen in diese Spalte einzufügen. Beheben wir das Problem:
Code language: SQL (Structured Query Language) (sql)
PostgreSQL gibt einen anderen Fehler aus:
Code language: Shell Session (shell)
Das liegt daran, dass wir versucht haben, eine Zeichenfolge mit mehr als 10 Zeichen in die Spalte y
einzufügen, die den Datentyp varchar(10)
hat.
Die folgende Anweisung fügt erfolgreich eine neue Zeile in die Tabelle character_tests
ein.
Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)
Code language: Shell Session (shell)
Zusammenfassung
- PostgreSQL unterstützt die Datentypen
CHAR
,VARCHAR
undTEXT
.CHAR
ist ein Zeichentyp mit fester Länge, währendVARCHAR
undTEXT
Zeichentypen mit variabler Länge sind. - Verwenden Sie
VARCHAR(n)
, wenn Sie die Länge der Zeichenkette (n
) überprüfen wollen, bevor Sie in eine Spalte einfügen oder diese aktualisieren. -
VARCHAR
(ohne Längenangabe) undTEXT
sind gleichwertig.
- War dieses Tutorial hilfreich?
- JaNein