Zum Inhalt springen

Texttypen

In DuckDB können Zeichenketten im VARCHAR-Feld gespeichert werden. Das Feld erlaubt die Speicherung von Unicode-Zeichen. Intern werden die Daten als UTF-8 kodiert.

Name Aliases Beschreibung
VARCHAR CHAR, BPCHAR, STRING, TEXT Zeichenkette variabler Länge
VARCHAR(n) CHAR(n), BPCHAR(n), STRING(n), TEXT(n) Zeichenkette variabler Länge. Die Maximallänge n hat keine Wirkung und dient nur der Kompatibilität

Eine Längenbegrenzung angeben

Die Angabe der Länge für die Typen VARCHAR, STRING und TEXT ist nicht erforderlich und hat keine Auswirkung auf das System. Die Angabe der Länge verbessert weder die Leistung noch reduziert sie den Speicherplatz der Zeichenketten in der Datenbank. Diese Varianten werden zur Kompatibilität mit anderen Systemen unterstützt, die eine Längenangabe für Zeichenketten verlangen.

Wenn Sie die Anzahl der Zeichen in einer VARCHAR-Spalte aus Gründen der Datenintegrität beschränken möchten, sollte der CHECK-Constraint verwendet werden, zum Beispiel:

CREATE TABLE strings (
val VARCHAR CHECK (length(val) <= 10) -- val has a maximum length of 10
);

Das VARCHAR-Feld erlaubt die Speicherung von Unicode-Zeichen. Intern werden die Daten als UTF-8 kodiert.

Einen Kompressionstyp angeben

Sie können für eine Zeichenkette mit der Klausel USING COMPRESSION einen Kompressionstyp angeben. Um beispielsweise zstd-Kompression anzuwenden, führen Sie aus:

CREATE TABLE tbl (s VARCHAR USING COMPRESSION zstd);

Werte des Texttyps

Werte des Texttyps sind Zeichenketten, auch String-Werte oder einfach Strings genannt. Zur Laufzeit entstehen String-Werte auf eine der folgenden Weisen:

  • durch Verweis auf Spalten, deren deklarierter oder implizierter Typ der Text-Datentyp ist
  • durch String-Literale
  • durch Casten von Ausdrücken auf einen Texttyp
  • durch Anwenden eines String-Operators oder Aufruf einer Funktion, die einen Texttyp-Wert liefert

Zeichenketten mit Sonderzeichen

Um Sonderzeichen in einer Zeichenkette zu verwenden, nutzen Sie Escape-String-Literale oder dollar-quoted String-Literale. Alternativ können Sie Konkatenation und die Zeichensfunktion chr verwenden:

SELECT 'Hello' || chr(10) || 'world' AS msg;
┌──────────────┐
│ msg │
│ varchar │
├──────────────┤
│ Hello\nworld │
└──────────────┘

Funktionen

Siehe Textfunktionen und Musterabgleich.