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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...