V případě, že pocházíte z prostředí C, typ znakového řetězce v PostgreSQL není pole znaků.
Pro každý typ foo v PostgreSQL existuje odpovídající typ pole foo[] který označuje pole hodnot typu foo . Používejte typy polí pouze v případě, že s nimi v databázi neplánujete příliš manipulovat; pokud tak učiníte, je obvykle lepší normalizovat pole do samostatné tabulky.
Pomineme-li typy polí, existují různé typy znaků:
-
"char"(uvozovky jsou povinné):jeden znak. Většinou se používá v katalogových tabulkách. Tento typ nepoužívejte, pokud nevíte, co děláte. -
character(n)nebochar(n):řetězec znaků s pevnou délkou. Bez ohledu na to, co tam uložíte, bude vždy na pravé straně polstrované mezerami. Chování, jak ho diktuje standard SQL, je někdy překvapivé, takže tento typ málokdy chcete. -
text:řetězec znaků libovolné délky. Toto je typ, který chcete pro řetězce znaků, pokud nechcete, aby databáze zavedla omezení délky. -
character varying(n)nebovarchar(n):je to stejné jakotexts dalším omezením délky.
Abych to završil příkladem:
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)