Ora che abbiamo familiarità con il concetto di tipi di dati di carattere CHAR, VARCHAR e TEXT rispettivamente in PostgreSQL, questo articolo si concentrerà sull’evidenziazione della differenza chiave tra loro.
Che cos’è il tipo di dati CHAR?
Questo tipo di dati viene utilizzato per memorizzare caratteri di lunghezza limitata. È rappresentato come char(n)
ocharacter(n)
in PostgreSQL, dove n rappresenta il limite della lunghezza dei caratteri.Se n non è specificato, il valore predefinito è char(1)
ocharacter(1)
.
Che cos’è il tipo di dati VARCHAR?
Questo tipo di dati viene utilizzato per memorizzare caratteri di lunghezza limitata. È rappresentato comevarchar(n)
in PostgreSQL, dove n rappresenta il limite della lunghezza dei caratteri. Se n non è specificato, il valore predefinito è varchar
che ha una lunghezza illimitata.
Che cos’è il tipo di dati di testo?
Questo tipo di dati viene utilizzato per memorizzare caratteri di lunghezza illimitata. È rappresentato cometext
in PostgreSQL. Le prestazioni del varchar (senza n) e del testo sono le stesse.
La tabella seguente fornisce la principale differenza tra CHAR, VARCHAR e TEXT:
Comparison | CHAR | VARCHAR | TEXT |
---|---|---|---|
Syntax | CHAR(n) | VARCHAR(n) | TEXT |
Representation | char(n) or character(n) |
varchar(n) |
text |
Length of characters | Limited | Limited | Unlimited |
Spaces and padding | Gets troncato | Viene troncato | Renains intatto |
Se n non è specificato | n = 1 | n = infinito | Concetto di n non esiste |
Query ciclo | Extra ciclo per controllare la lunghezza | Extra ciclo per controllare la lunghezza | Nessuna valutazione di carattere lunghezza |
Esempio:
creiamo una nuova tabella(ad esempio, character_tests) per la dimostrazione usando i seguenti comandi:
CREATE TABLE character_tests ( id serial PRIMARY KEY, x CHAR (1), y VARCHAR (10), z TEXT);
Ora andiamo a inserire una nuova riga nella char_test tabella utilizzando il seguente comando:
INSERT INTO character_tests (x, y, z)VALUES ( 'Geeks', 'This is a test for varchar', 'This is a very long text for the PostgreSQL text column' );
In questa fase, PostgreSQL, viene generato un errore come il tipo di dati della colonna x è di tipo char(1) e abbiamo cercato di inserire una stringa di tre caratteri in questa colonna, come mostrato di seguito:
ERROR: value too long for type character(1)
Così, ora proviamo a risolvere il problema.
INSERT INTO character_tests (x, y, z)VALUES ( 'G', 'This is a test for varchar', 'This is a very long text for the PostgreSQL text column' );
Ora, si otterrà lo stesso errore per la y colonna come numero di caratteri immessa è maggiore di 10, come illustrato di seguito:
ERROR: value too long for type character(10)
si può correggere troppo.
INSERT INTO character_tests (x, y, z)VALUES ( 'Y', 'varchar(n)', 'This is a very long text for the PostgreSQL text column' );
Ora che siamo riusciti ad assegnare con successo i valori al tipo di dati di carattere, verificarlo eseguendo il comando seguente:
SELECT * FROM character_tests;
Output: