从varchar中选择子字符串并转换为Integer数组

时间:2013-12-09 18:23:29

标签: sql arrays postgresql plpgsql postgresql-8.3

我的存储过程中有一个VARCHAR数字,这些数字被组织为数组,我将在下面显示一个示例:

{1,2,3,4,5,6,7,8,9},{1,2,3,4,5},{1,2,3},{9} -- This is a STRING

我希望在FOR之间每次从此集合中选择一个{}循环,并将其转换为整数数组。

所以第一次进入我的循环时我会:

{1,2,3,4,5,6,7,8,9}

因此,我将使用array_to_string将其转换为integer[]

第二次我会:

{1,2,3,4,5}

继续使用array_to_string

任何提示?小心,因为不幸的是我正在使用PostgreSQL 8.3!

1 个答案:

答案 0 :(得分:1)

可以在一个声明中执行此操作:

SELECT string_to_array(unnest(string_to_array(
          trim('{1,2,3,4,5,6,7,8,9},{1,2,3,4,5},{1,2,3},{9}', '{}')
          , '},{')), ',')::int[]

..在Postgres 8.4或更高版本中。 8.3 has reached EOL.迫切需要考虑升级。

但是,8.3中已有regexp_split_to_table()

SELECT string_to_array(regexp_split_to_table(
          trim('{1,2,3,4,5,6,7,8,9},{1,2,3,4,5},{1,2,3},{9}', '{}')
          , '},{'), ',')::int[]

-> SQLfiddle demo for Postgres 8.3.

对于循环数组,请考虑以下相关答案:
Postgres - array for loop