问题描述
我在 Greenplum 中有一个表 scheme2.central_id__new_numbers。
我需要以多对多关系的形式从 scheme2.central_id__new_numbers 中选择数据。
CREATE FUNCTION my_scheme.parse_new_numbers (varchar) RETURNS SetoF varchar as
$BODY$
declare
i int;
BEGIN
FOR i IN 1..10 LOOP
select
central_id,(select regexp_split_to_table((select new_numbers
from scheme2.central_id__new_numbers limit 1 offset i),'\s+'))
from scheme2.central_id__new_numbers limit 1 offset i
END LOOP;
END;
$BODY$
LANGUAGE plpgsql;
解决方法
我建议改用 UNNEST()
函数,即假设 new_numbers
列是 int[]
数据类型,
SELECT central_id,UNNEST(new_numbers) AS new_numbers
FROM central_id__new_numbers;
如果 new_columns
列不是数组数据类型,那么您需要在使用 string_to_array()
之前使用即 UNNEST()
或类似的。