В случай, че идвате от C опит, тип символен низ в PostgreSQL е не масив от знаци.
За всеки тип foo
в PostgreSQL има съответен тип масив foo[]
който обозначава масив от стойности от тип foo
. Използвайте типове масиви само ако не планирате да ги манипулирате много вътре в базата данни; ако го направите, обикновено е по-добре да нормализирате масива в отделна таблица.
Като оставим настрана типовете масиви, има различни типове знаци:
-
"char"
(двойните кавички са задължителни):един знак. Използва се предимно в каталожни таблици. Не използвайте този тип, освен ако не знаете какво правите. -
character(n)
илиchar(n)
:символен низ с фиксирана дължина. Без значение какво съхранявате там, то винаги ще бъде подплатено с празни места от дясната страна. Поведението, както се диктува от SQL стандарта, понякога е изненадващо, така че рядко искате този тип. -
text
:символен низ с произволна дължина. Това е типът, който искате за символни низове, освен ако не искате базата данни да наложи ограничение на дължината. -
character varying(n)
илиvarchar(n)
:това е същото катоtext
с допълнително ограничение на дължината.
За да го завърша с пример:
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)