Als u van een C-achtergrond komt, is een tekenreekstype in PostgreSQL niet een reeks tekens.
Voor elk type foo
in PostgreSQL is er een corresponderend arraytype foo[]
die een reeks waarden van het type foo
. aangeeft . Gebruik array-types alleen als u niet van plan bent ze veel te manipuleren in de database; als je dat doet, is het meestal beter om de array te normaliseren in een aparte tabel.
Afgezien van arraytypes, zijn er verschillende karaktertypes:
-
"char"
(de dubbele aanhalingstekens zijn verplicht):een enkel teken. Meestal gebruikt in catalogustabellen. Gebruik dit type niet tenzij u weet wat u doet. -
character(n)
ofchar(n)
:tekenreeks met vaste lengte. Het maakt niet uit wat je daar opbergt, het zal altijd worden opgevuld met spaties aan de rechterkant. Het gedrag, zoals gedicteerd door de SQL-standaard, is soms verrassend, dus dit type wil je zelden. -
text
:tekenreeks met willekeurige lengte. Dit is het type dat u wilt voor tekenreeksen, tenzij u wilt dat de database een lengtelimiet oplegt. -
character varying(n)
ofvarchar(n)
:dit is hetzelfde alstext
met een extra lengtelimiet.
Om het af te ronden met een voorbeeld:
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)