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&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 放在第二列中。我尝试了这两个子字符串,但由于某种原因,我无法成功获取我想要的数据。 【参考方案1】:

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

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

【讨论】:

以上是关于GreenPlum Substring - 获取长文本的一部分的主要内容,如果未能解决你的问题,请参考以下文章

数据库查询原来长这样!| Greenplum新功能—可视化执行计划

GreenPlum/PostGreSQL 通过“表磁盘存储文件“获取表最后“更新时间“

如何获取 Greenplum 中用户最后登录时间和登录频率

Greenplum:获取通过外部表处理的文件名

Greenplum 并行下载转储到本地集群

使用 gp_segment_id 作为分区列从 greenplum 中并行获取数据