【问题标题】:Is there a way in Redshift to extract all URLs from a block of text each as a separate row?Redshift 有没有办法从一个文本块中提取所有 URL,每个 URL 都作为单独的行?
【发布时间】:2026-01-08 08:05:01
【问题描述】:

我正在尝试从可能包含 0、1 或大量 URL 的文本块中提取特定格式的所有 URL。

例如,一行可能有以下值:

'一些文字 blahblahblah.com 更多文字 secondwebsite.com 更多测试'

我希望在我的输出中表示为两行:

'blahblahblah.com'

'secondwebsite.com'

我可以使用REGEXP_SUBSTRSPLIT_PART 来获取第一个.com 事件,但理想情况下我可以分别提取所有事件。有没有办法做到这一点?

【问题讨论】:

    标签: sql regex postgresql amazon-redshift


    【解决方案1】:

    从单个输入行返回多个输出行在 SQL 中并不容易。

    您需要交叉连接到一个数字表(例如,一个包含包含1, 2, 3... 的行的表,然后使用该数字来引用输入行的单独部分。

    底线:有可能,但很混乱。尝试找到实现此目的的替代方法。

    【讨论】:

    • 哦,我明白了——这听起来很乱但仍然可行,如果我最终需要这样做,我会使用它!非常感谢!
    【解决方案2】:

    如果你想从具有多个 URL 的字段中创建单独的行,这在 SQL 中通常是不可行的,我建议你使用 ETL 工具或一些脚本语言如 python 来做到这一点。

    【讨论】:

    • 啊,好吧,我希望有办法,但我太新手了,不知道!感谢您的输入:)
    最近更新 更多