我在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"}
。
答案 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, ',')