【问题标题】:GreenPlum Substring - Getting part of a long textGreenPlum Substring - 获取长文本的一部分
【发布时间】:2014-01-09 23:34:07
【问题描述】:

说我的网址很长

xyz = 'www.google.com/xyz?para1=value1&para2=value2&para3=value3....'

我正在尝试从这个长 URL 中获取“para1”

所以,我有

select TRIM(Leading '?' from Substring(xyz from '%#"?%=#"%' for '#'))

我得到的这个特定陈述的答案是

para1=value1&para2=value2&para3=

我怎样才能使用上面的 select 语句(或任何其他类似方法?)只得到 'para1'?

我正在使用 Greenplum(如主题标题中所述)

【问题讨论】:

  • 模式表达式在 Pg 9.3 上失败,所以我很难对此进行测试。一般来说,我会说你想嵌套两个 substring 表达式,一个用来切断前面,另一个用来在第一个 = 之后砍掉。
  • 你好,谢谢 :) 我最终分两步完成,一旦我得到了“?”之后的所有内容,我使用了 'Regexp_string_to_table(value &) 然后 regexp_string_to_table (value =)。这样,我将所有的 Paramname (para1,para2...) 放在一列中,将 Values 放在第二列中。我尝试了这两个子字符串,但由于某种原因,我无法成功获取我想要的数据。

标签: postgresql substring greenplum


【解决方案1】:

由于您显然拥有 regexp_ 函数(我认为 Greenplum 不支持它们)使用:

select (regexp_matches(
   'www.google.com/xyz?para1=value1&para2=value2&para3=value3....',
   '\?([^&]+)='
   ))[1];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    相关资源
    最近更新 更多