从表 Greenplum 解析数据

问题描述

我在 Greenplum 中有一个表 scheme2.central_id__new_numbers。

enter image description here

我需要以多对多关系的形式从 scheme2.central_id__new_numbers 中选择数据。

enter image description here

我也写了代码,但一定是在某个地方转错了(代码不起作用):

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() 或类似的。