如何将一列逗号分隔的字符串转换为字符串数组

时间:2019-09-26 18:17:38

标签: arrays postgresql ddl

我在PostgreSQL中有此表,其中的一列是包含称为directors的nconst的字符串。字符串的格式为nm00386378,nm97284993,我需要将每个字符串变成数组,例如:{"nm00386378","nm97284993"}

我尝试了以下代码,但我认为它只是将字符串转换为一个值数组:

alter table crew_text
    alter directors drop default,
    alter directors type text[] using array[directors],
    alter directors set default '{}';

我得到了{"nm00386378,nm97284993"}的数组值,但是我期望{"nm00386378","nm97284993"}

2 个答案:

答案 0 :(得分:2)

像这样使用string_to_array()

alter table crew_text
   alter directors drop default
,  alter directors type text[] using string_to_array(directors, ',')
,  alter directors set default '{}';

db <>提琴here

仅在需要时使用正则表达式函数。这些功能更强大,但也更棘手,而且价格更高。

答案 1 :(得分:1)

尝试为USING使用以下ALTER TABLE ... ALTER ... TYPE子句:

USING regexp_split_to_array(directors, ',')