我浏览了有关 PostgreSQL 字符类型的文档。但是我还是有一些疑问
"char"是固定长度 i,e 1 如果是这样,“char[]”的长度是多少,因为我无法在 pgadmin 中更改它,我认为它用于可变长度字符数组。那么,实际的默认大小是多少?
与“char”[] 相比,字符的用途是什么?现在我假设字符用于我们定义大小的固定长度字符数组。
为什么要使用character[]?
character varying 和 character varying[] 有什么区别?
最佳答案
如果您有 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)
关于postgresql - 需要解释 PostgreSQL 中的字符类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42484436/