GreenPlum Substring - 获取长文本的一部分
Posted
技术标签:
【中文标题】GreenPlum Substring - 获取长文本的一部分【英文标题】:GreenPlum Substring - Getting part of a long text 【发布时间】:2014-01-09 23:34:07 【问题描述】:说我的网址很长
xyz = 'www.google.com/xyz?para1=value1¶2=value2¶3=value3....'
我正在尝试从这个长 URL 中获取“para1”
所以,我有
select TRIM(Leading '?' from Substring(xyz from '%#"?%=#"%' for '#'))
我得到的这个特定陈述的答案是
para1=value1¶2=value2¶3=
我怎样才能使用上面的 select 语句(或任何其他类似方法?)只得到 'para1'?
我正在使用 Greenplum(如主题标题中所述)
【问题讨论】:
模式表达式在 Pg 9.3 上失败,所以我很难对此进行测试。一般来说,我会说你想嵌套两个substring
表达式,一个用来切断前面,另一个用来在第一个 =
之后砍掉。
你好,谢谢 :) 我最终分两步完成,一旦我得到了“?”之后的所有内容,我使用了 'Regexp_string_to_table(value &) 然后 regexp_string_to_table (value =)。这样,我将所有的 Paramname (para1,para2...) 放在一列中,将 Values 放在第二列中。我尝试了这两个子字符串,但由于某种原因,我无法成功获取我想要的数据。
【参考方案1】:
由于您显然拥有 regexp_
函数(我认为 Greenplum 不支持它们)使用:
select (regexp_matches(
'www.google.com/xyz?para1=value1¶2=value2¶3=value3....',
'\?([^&]+)='
))[1];
【讨论】:
以上是关于GreenPlum Substring - 获取长文本的一部分的主要内容,如果未能解决你的问题,请参考以下文章
数据库查询原来长这样!| Greenplum新功能—可视化执行计划