PostgreSQL 将列迁移到数组

Dav*_*son 6 postgresql

我在 PostgreSQL 中有一个表,其中包含一个字符类型 (255) 的列“X”。现在我想迁移该表,以便 'X' 更改为字符 [] (255) 类型,但我希望列原始字符 (255) 值作为 'X 中新数组的一个元素出现在迁移的列中'。

使用 sequelize,有没有办法通过迁移脚本来做到这一点?或者有没有办法在 JavaScript 中使用转换和其他东西来做到这一点?

最好的(或可能唯一的)方式是什么?

a_h*_*ame 12

以下 DDL 会将列转换为数组并使现有值成为第一个数组元素:

alter table the_table
   alter column x type varchar(255)[] using array[x];
Run Code Online (Sandbox Code Playgroud)

varchar 是同义词 character varying

要逆转此更改,您可以应用相同的逻辑:

alter table the_table
   alter column x type varchar(255) using coalesce(x[1],'');
Run Code Online (Sandbox Code Playgroud)

x[1]返回第一个元素,但只有null在数组为空时才会返回。有了coalesce()这个,然后可以变成一个空字符串''