如何在 Redshift 中拆分字符串并进行迭代

Posted

技术标签:

【中文标题】如何在 Redshift 中拆分字符串并进行迭代【英文标题】:How to Split a String and Iterate in Redshift 【发布时间】:2020-11-19 20:20:27 【问题描述】:

我是 Redshift 的新手,我偶然发现了一个场景,在该场景中,我的程序想要拆分一个字符串并对其进行迭代并对其进行一些操作。我知道 redshift 不支持数组,我想知道如何在 redshift 中实现这一点

CREATE OR REPLACE PROCEDURE example(value IN varchar) AS $$
 BEGIN
    --value = 'FIRST, SECOND, THIRD' -> I want to split the string using a comma and iterate through one by one and do some manipulations.
  END;
$$ LANGUAGE plpgsql;

有人可以指导我吗?

提前致谢,

【问题讨论】:

John 的回答是正确的,但由于您是 Redshift 的新手,我会给出建议。如果您需要操作的数据很大,请确保您需要一个存储过程并且无法使用直接 SQL 执行相同的操作。您会看到存储过程提供了极大的灵活性,在大数据上调用它们可能会很慢。因此,如果您可以在没有存储过程的情况下度过难关,那么在 Redshift 中您的大数据执行时间会更好。 【参考方案1】:

您可以创建一个递增值循环,并调用SPLIT_PART(),传入循环值。

如果部分大于字符串部分的数量,SPLIT_PART 返回一个空字符串。

因此,如果返回空字符串,您将停止循环。

【讨论】:

以上是关于如何在 Redshift 中拆分字符串并进行迭代的主要内容,如果未能解决你的问题,请参考以下文章

Redshift :- 易于将逗号分隔的字符串拆分为行

如何将拆分的 gzip 文件中的数据加载到 redshift 中?

如何在shell中拆分字符串并获取最后一个字段

Redshift 的 UNLOAD Query 生成的 S3 请求数

redshift 返回的结果集是不是支持重置迭代器?

如何把oracle中查询出来的一列进行拆分。如查出结果为1@2@3@4,如何拆分成 1 2 3