PostgreSQL 通过 pgAdmin 在“字符变化”和“字符变化[]”之间的区别

问题描述

以下两种数据类型有什么区别?

我认为当我们还想使用长度约束时使用 character varying[]。但是,从我在 pgAdmin 中看到的情况来看,我们也可以将此约束与 character varying 一起使用。

columns

解决方法

文本与文本数组。它表示单个用户名,其中可能有多个电子邮件存储为 VARCHAR(100) 类型的数组。

CREATE TABLE tab(
   username character varying(100),email character varying(100)[]
);

INSERT INTO tab(username,email) VALUES ('user','{"[email protected]","[email protected]"}');

SELECT *,email[1],email[2]
FROM tab;

db<>fiddle demo

输出:

+-----------+------------------------------+---------------+--------------+
| username  |            email             |    email      |    email     |
+-----------+------------------------------+---------------+--------------+
| user      | {[email protected],[email protected]}  | [email protected]  | [email protected] |
+-----------+------------------------------+---------------+--------------+
,

“字符变化”(或简称为 varchar)是一个具有变化长度的字符串(文本)字段(在您的情况下最多 100 个字符)。 [] 表示一个数组。即,“字符变化[]”是这种“字符变化”字符串的数组