我浏览了有关PostgreSQL字符类型的文档。但我仍然有一些问题
“char”是固定长度i,e 1 如果是这样什么是“char []”的长度因为我无法在pgadmin中更改它我认为它用于可变长度字符数组。那么,实际的默认大小是多少?
与“char”[]相比,字符的用途是什么?现在我假设字符用于我们定义大小的固定长度字符数组。
为什么使用character []?
字符变化和字符变化有什么区别[]?
答案 0 :(得分:5)
如果你来自C背景,PostgreSQL中的字符串类型不是一个字符数组。
对于PostgreSQL中的每个类型foo
,都有一个对应的数组类型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)