Varchar vs. Text in PostgreSQL

Bilal Shahid 15 Februar 2024
  1. der Datentyp TEXT in PostgreSQL
  2. der Datentyp VARCHAR in PostgreSQL
  3. VARCHAR gegen TEXT in PostgreSQL
Varchar vs. Text in PostgreSQL

Es gibt mehrere Datentypen in PostgreSQL, um verschiedene Arten von Daten wie Ganzzahlen, Datumsangaben, Zeichenfolgen usw. zu speichern. Der Datentyp Zeichenfolge hat jedoch drei Haupttypen in PostgreSQL: CHAR, VARCHAR und TEXT.

In diesem Artikel werden wir ausführlich auf VARCHAR und TEXT eingehen und ihre Unterschiede vergleichen.

der Datentyp TEXT in PostgreSQL

Der Datentyp hat keine Begrenzung, wie viel text er speichern kann. Daher können Sie in das Feld mit diesem Datentyp einen beliebigen text einfügen, der keinen Fehler anzeigt.

Ein einfaches Schlüsselwort TEXT wird verwendet, wobei der Variablenname dem Schlüsselwort vorangestellt wird, um ein Feld dieses Datentyps zu deklarieren. Nachfolgend wird es anhand einiger Beispiele näher erläutert.

CREATE TABLE text_example (
    id int PRIMARY KEY,
    data TEXT NOT NULL
);

Diese Tabelle hat INT und TEXT als zwei Datentypen zum Speichern von Daten. Lassen Sie uns nun einige Daten einfügen.

INSERT INTO text_example
VALUES
(1,' This text has no size limit because stored in TEXT datatype');

SELECT * FROM text_example;

Die folgende Ausgabe zeigt, dass es erfolgreich in der Variable gespeichert wurde, weshalb in den meisten Fällen der Datentyp TEXT verwendet wird.

varchar vs text in postgresql - Ausgabe eins

der Datentyp VARCHAR in PostgreSQL

Dieser Datentyp hat zwei Varianten. VARCHAR, auch Zeichenvariation (n) genannt, und VARCHAR(n). VARCHAR funktioniert grundsätzlich wie der Datentyp TEXT mit einem anderen Namen, wenn kein Längenbezeichner definiert ist.

Da kein Limit definiert ist, können Sie unbegrenzt text darin speichern. Wir können es leicht demonstrieren, indem wir das vorherige Beispiel verwenden und den Datentyp TEXT in VARCHAR ändern.

CREATE TABLE varchar_example (
    id int PRIMARY KEY,
    data VARCHAR NOT NULL
);

Diese Tabelle hat INT und VARCHAR als zwei Datentypen zum Speichern von Daten. Lassen Sie uns nun einige Daten einfügen.

INSERT INTO varchar_example
VALUES
(1,' This text has no size limit because stored in VARCHAR datatype');

SELECT * FROM varchar_example;

Die folgende Ausgabe zeigt, dass es erfolgreich in der Variablen gespeichert wurde:

varchar vs text in postgresql - Ausgabe zwei

Wie wir sehen können, wurden die Daten erfolgreich eingefügt, genau wie der Datentyp TEXT.

Kommen wir nun zu VARCHAR(n), die Dinge werden ein wenig interessant, da Sie jetzt die Anzahl der Zeichen begrenzen können, die in den Datentyp VARCHAR(n) eingefügt werden. Wenn Sie versuchen, mehr als n Zeichen in einem VARCHAR(n)-Datentyp zu speichern, wird ein Fehler angezeigt.

Wenn jedoch die eingefügten Zeichen (die das Limit überschreiten) alle Leerzeichen sind, wird es keinen Fehler geben und diese Leerzeichen werden mit der Zeichenfolge abgeschnitten. Dies kann anhand von Beispielcode und deren Ausgaben wie folgt demonstriert werden:

CREATE TABLE Nvarchar_example (
    id int PRIMARY KEY,
    data VARCHAR(15) NOT NULL
);

Diese Tabelle hat INT und VARCHAR(n) als zwei Datentypen zum Speichern von Daten. Lassen Sie uns nun einige Daten einfügen.

INSERT INTO Nvarchar_example VALUES (1, 'Size is fifteen');
SELECT * FROM Nvarchar_example;

Die folgende Ausgabe zeigt, dass es erfolgreich in der Variablen gespeichert wurde:

varchar vs text in postgresql - Ausgabe drei

Wie Sie sehen können, haben wir in diesem Fall das angegebene Limit nicht überschritten. Daher haben wir den string erfolgreich gespeichert. Das folgende Beispiel zeigt jedoch, was passiert, wenn dies nicht der Fall ist.

CREATE TABLE Nvarchar_example2 (
    id int PRIMARY KEY,
    data VARCHAR(10) NOT NULL
);

Lassen Sie uns nun einige Daten einfügen.

INSERT INTO Nvarchar_example2 VALUES (1, 'Size is fifteen');

Wie Sie sehen können, zeigt die Ausgabe einen Fehler bezüglich der Größe des Datentyps:

varchar vs text in postgresql - Ausgabe vier

Ein wichtiger Grund für die Verwendung von VARCHAR ist, dass Sie damit die Anzahl der Zeichen in einem Datentyp einschränken können. Dies ist nützlich, wenn Sie das Einfügen eines Strings einschränken müssen.

PostgreSQL gibt einen Fehler aus, der verhindert, dass mehr Zeichen als das definierte Limit des Längenbezeichners hinzugefügt werden.

VARCHAR gegen TEXT in PostgreSQL

Nachdem wir ihre Eigenschaften oben beschrieben haben, glauben wir, dass Sie klarer beurteilen können, wann Sie einen dieser Datentypen verwenden und wann nicht. Abschließend werden wir einige gängige Szenarien besprechen, um Ihr Verständnis zu stärken.

In anderen Datenbanken wirkt sich die Verwendung eines dieser Datentypen ziemlich stark auf die Leistung aus, aber in PostgreSQL gibt es keinen merklichen Leistungsunterschied zwischen den beiden Typen.

Es kann etwas mehr Speicherplatz oder ein paar zusätzliche CPU-Zyklen erforderlich sein, um die Begrenzung der Längenangabe vor dem Einfügen zu validieren, aber das ist vernachlässigbar.

Da die beiden Datentypen keinen wirklichen Leistungsvorteil haben, ist der einzige grundlegende und wesentliche Punkt, ob Sie die Größe der eingefügten Zeichen begrenzen möchten oder nicht.

Der VARCHAR(n) bietet eine Validierung, und PostgreSQL zeigt eine Fehlermeldung an, wenn Sie die definierte Grenze überschreiten.

Abgesehen davon wird es nicht empfohlen, normales VARCHAR anstelle von TEXT zu verwenden, da beide gleichwertige Funktionalitäten bieten und TEXT einen anderen Namen hat, der leicht zu merken ist und mit einer unbegrenzten Zeichenfolgenlänge verbunden ist.

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub