我在Amazon Redshift中使用postgres数据库,我需要获取Web URL的最后一部分并且以下代码可以正常工作,但是如果我尝试在大量记录上运行它会使查询挂起并且不会完成:
reverse(left(reverse(post_pg_url_txt),position('/' in reverse(post_pg_url_txt))-1))
是否有人知道更有效的方式将所有文字都放在网址中最后一行“/”的右边,而不是我上面粘贴的代码?
提前致谢, 史蒂芬
答案 0 :(得分:1)
选项1:
使用split_part function以及反向 slghtly 更好的解决方案
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更短两次写入。