Redshift SQL - 获取 Web URL 的最右侧部分

Posted

技术标签:

【中文标题】Redshift SQL - 获取 Web URL 的最右侧部分【英文标题】:Redshift SQL - Get the Right most section of Web URL 【发布时间】:2018-04-27 18:26:40 【问题描述】:

我在 Amazon Redshift 中使用 postgres 数据库,我只需要获取 Web URL 的最后一部分,以下代码有效,但如果我尝试在大量记录上运行它,则会导致查询挂起并且不会完成:

reverse(left(reverse(post_pg_url_txt),position('/' in reverse(post_pg_url_txt))-1))

有谁知道比我在上面粘贴的代码更有效的方法来将所有文本放在网络 URL 中最后一个“/”的右侧?

提前致谢, 史蒂文

【问题讨论】:

【参考方案1】:

选项1:

将split_part function 与反向一起使用稍微更好的解决方案

reverse(split_part(reverse(post_pg_url_txt), '/', 1))

选项 2:

将regexp_count function 与 split_part 一起使用

split_part(post_pg_url_txt, '/', regexp_count(post_pg_url_txt, '/')+1)

如您所见,选项 1 是较短的两次写入。

【讨论】:

酷...感谢您的快速反馈。我测试了您的代码,第一个有效(但仍使数据库挂起),第二个无效(我收到错误消息“错误:函数 regexp_count(字符变化,未知)不存在提示:没有功能匹配给定的名称和参数类型。您可能需要添加显式类型转换。" 它是 rds/aws 上的 postgres 数据库。不确定他们是否由于某种原因禁用了函数 regexp_count 或其他什么。 您使用的是 redshift 还是 postgresql?在 postgresql 上,您可以编写更多简洁的代码,当然不能保证为 1 个数据库编写的解决方案可以在另一个数据库上工作。请澄清您的问题

以上是关于Redshift SQL - 获取 Web URL 的最右侧部分的主要内容,如果未能解决你的问题,请参考以下文章

SQL(Redshift)获取多个表的交集

SQL - Redshift 滞后函数获取重复项

SQL (Redshift) 获取给定列中连续数据的开始值和结束值

Redshift上的SQL查询以获取第一个和最后一个值

从 Redshift 表中获取 JSON 数据

redshift regex 获取多个匹配项并扩展行