postgresql 中的文本[]?

sur*_*raj 8 postgresql jdbc

我在 Postgresql 中看到一个字段text[](文本数组)。

据我了解,它可以在单个列中存储多个文本数据。

我尝试阅读有关手册的更多信息:http://www.postgresql.org/docs/current/static/datatype-character.html但不幸的是,关于 text[] 列类型没有太多内容。

那么谁能帮助我理解

  • 如何向 text[] 列添加新值?
  • 当我们查询并检索 text[] 列的值时,结果集会是什么?

    编辑我有一个包含 2 列group_nameMembers 的
    表。每次有新人加入群组时,新人的 id应插入到该 group_name 的列 Members中。这是我的要求。一个组可以包含“n”个成员

    编辑 2
    巴勃罗要求我改用两张桌子。我可以知道如何通过使用两个不同的表来解决这个问题吗?现在我使用逗号(,)来存储用逗号分隔的多个值。这个方法有错吗?

Pab*_*ruz 4

要插入新值只需执行以下操作:

insert into foo values (ARRAY['a', 'b']);
Run Code Online (Sandbox Code Playgroud)

假设你有这张表:

create table foo (a text[]);
Run Code Online (Sandbox Code Playgroud)

每次你执行 a 时,select a from foo你都会有一个数组类型的列:

db1=> select a from foo;
   a   
-------
 {a,b}
(1 row)
Run Code Online (Sandbox Code Playgroud)

如果您想要数组中的特定元素,则需要使用下标(PostgreSQL 中的数组是从 1 开始的):

db=> select a[1] from foo;
 a 
---
 a
(1 row)
Run Code Online (Sandbox Code Playgroud)

为 PostgreSQL 表选择数组数据类型时要小心。确保您不需要子表

  • 您是否考虑过为这 500 个数字使用单独的表格?该列的语义是什么? (2认同)
  • 那么我的建议是:不要使用数组列。只需使用两个表:“groups”和“group_members”。 (2认同)