Hvis du kommer fra en C-baggrund, er en tegnstrengtype i PostgreSQL ikke en række tegn.
For hver type foo
i PostgreSQL er der en tilsvarende matrixtype foo[]
der angiver en række værdier af typen foo
. Brug kun array-typer, hvis du ikke planlægger at manipulere dem meget inde i databasen; hvis du gør det, er det normalt bedre at normalisere arrayet til en separat tabel.
Bortset fra array-typer, er der forskellige tegntyper:
-
"char"
(de dobbelte anførselstegn er påkrævet):et enkelt tegn. Mest brugt i katalogtabeller. Brug ikke denne type, medmindre du ved, hvad du laver. -
character(n)
ellerchar(n)
:tegnstreng med fast længde. Uanset hvad du opbevarer der, vil den altid være polstret med mellemrum i højre side. Adfærden, som dikteret af SQL-standarden, er nogle gange overraskende, så du vil sjældent have denne type. -
text
:tegnstreng af vilkårlig længde. Dette er den type, du ønsker for tegnstrenge, medmindre du ønsker, at databasen skal pålægge en længdegrænse. -
character varying(n)
ellervarchar(n)
:dette er det samme somtext
med en ekstra længdegrænse.
For at runde det af med et eksempel:
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)