【问题标题】:complicated substring of URL string in SQL RedshiftSQL Redshift中URL字符串的复杂子字符串
【发布时间】:2015-05-27 11:34:46
【问题描述】:

我有不同的 URL 字符串

/kampane/luxury-shoes/damska-obuv-v11574-negro-38-cerna
/pl-accesoriu-gopro-caps-doors-uni/
/crossbody-kabelka-clutch-eclipce-negro-51x50p7-2000.html
http://www.rozbaleno.cz/chladnick…/mraznicka-guzzanti-gz-40f

我需要在最后一个斜杠之后为该部分添加子串,但是,如果最后一个斜杠之后是空白空间,我需要在它之前的部分。如果点在我需要的子字符串之后,我还需要删除点之后的所有内容。 所以我对上面这些字符串的子串结果是:

damska-obuv-v11574-negro-38-cerna
pl-accesoriu-gopro-caps-doors-uni
crossbody-kabelka-clutch-eclipce-negro-51x50p7-2000
mraznicka-guzzanti-gz-40f

我无法编写不丢失任何数据的代码。请帮忙。

【问题讨论】:

    标签: sql substring amazon-redshift


    【解决方案1】:

    一种方法是使用正则表达式和子字符串。但是,这可能就足够了:

    select (case when url like '%/'
                 then reverse(split_part(reverse(url), '/', 2))
                 else reverse(split_part(reverse(url), '/', 1))
            end)
    

    【讨论】:

    • 谢谢,但它不完整...我还需要删除 .html 之后的所有内容,包括 '.html' 和 '?'
    • @LucieSperkova 。 . .那不是你问的问题。我建议您使用适当的样本数据提出另一个问题。我认为以使答案无效的方式更改问题是不礼貌的,因为它会吸引对答案的反对。
    【解决方案2】:

    我不想失礼,非常感谢您的帮助,谢谢!但我写道,我还有一个字符串/crossbody-kabelka-clutch-eclipce-negro-51x50p7-2000.html,我需要删除点之后的所有内容。这不是这个结果在做什么。但我可能找到了解决方案:

    当 right(pagepath,1) = '/' then regexp_replace(regexp_substr(left(pagepath, LEN(pagepath) -1),'[^/]+$'),'.html(. )|\?(.)') else regexp_replace(regexp_substr(pagepath,'[^/]+$'),'.html(.)|\?( .)') 结束

    【讨论】:

      猜你喜欢
      • 2013-04-13
      • 2015-09-18
      • 2014-03-31
      • 2019-06-03
      • 2013-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多