Nel caso in cui provieni da uno sfondo C, un tipo di stringa di caratteri in PostgreSQL non una matrice di caratteri.
Per ogni tipo foo
in PostgreSQL esiste un tipo di array corrispondente foo[]
che denota un array di valori di tipo foo
. Utilizzare i tipi di array solo se non si prevede di manipolarli molto all'interno del database; se lo fai, di solito è meglio normalizzare l'array in una tabella separata.
A parte i tipi di array, ci sono diversi tipi di caratteri:
-
"char"
(le doppie virgolette sono obbligatorie):un solo carattere. Utilizzato principalmente nelle tabelle del catalogo. Non utilizzare questo tipo a meno che tu non sappia cosa stai facendo. -
character(n)
ochar(n)
:stringa di caratteri di lunghezza fissa. Non importa cosa immagazzini lì, sarà sempre imbottito con spazi sul lato destro. Il comportamento, come dettato dallo standard SQL, a volte è sorprendente, quindi raramente si desidera questo tipo. -
text
:stringa di caratteri di lunghezza arbitraria. Questo è il tipo che desideri per le stringhe di caratteri, a meno che non desideri che il database imponga un limite di lunghezza. -
character varying(n)
ovarchar(n)
:è lo stesso ditext
con un limite di lunghezza aggiuntivo.
Per concludere con un esempio:
CREATE TABLE strtest(
id serial PRIMARY KEY,
sc "char",
c character(10),
vc character varying(10),
vca character varying(10)[]
);
INSERT INTO strtest (sc, c, vc, vca)
VALUES (
'x',
'short',
'short',
ARRAY['short1', 'short2', 'short3']
);
SELECT sc, c, vc, vca[2] FROM strtest;
sc | c | vc | vca
----+------------+-------+--------
x | short | short | short2
(1 row)