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 alstextmet 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)