我的存储过程中有一个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!
答案 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