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