Redshift - 拆分列以查找位置不确定的分隔符之间的值

Posted

技术标签:

【中文标题】Redshift - 拆分列以查找位置不确定的分隔符之间的值【英文标题】:Redshift - Split column to find value between delimiter with uncertain position 【发布时间】:2016-05-18 20:48:52 【问题描述】:

我有一个红移表,有两列,id 和 link。

当前表

id 链接

1 www.something.com/bla?lughlegh &fruit=apple& khkhflkjndkj&ljghldh&ljhrleh

2 www.somethingelse.com/blabla?sdf&hthdth&sdhfhfY &fruit=orange& ergegertg

我想从链接列中选择值fruit=apple。但问题是 -

&fruit=apple& 可以出现在链接中的任何位置[在第一个链接中,fruit 位于第一个和第二个 & 符号之间。但是,在第二个链接中,水果位于第 3 和第 4 & 符号之间。]

有很多&。所以我不能说我总是想要第 3 和第 4 & 符号之间的值。

链接中 & 符号的数量并不总是恒定的

fruit 的值可以是任何值(并非总是苹果)

我必须基本上寻找文本 fruit= 并在 fruit= 和下一个 & 之间选择值

必填表

id 链接水果

1 www.something.com/bla?lughlegh &fruit=apple& khkhflkjndkj&ljghldh&ljhrleh apple

2 www.somethingelse.com/blabla?sdf&hthdth&sdhfhfY &fruit=orange& ergegertg orange

【问题讨论】:

【参考方案1】:

试试REGEXP_REPLACE:

REGEXP_REPLACE(url, ".*[?&]fruit=([^&]*).*", "$1");

【讨论】:

以上是关于Redshift - 拆分列以查找位置不确定的分隔符之间的值的主要内容,如果未能解决你的问题,请参考以下文章

遍历 pandas 数据框中的所有列以在分隔符上拆分

Redshift :- 易于将逗号分隔的字符串拆分为行

使用oracle SQL按分隔符位置拆分字符串

mysql中将一列以逗号分隔的值分割成多列显示?

遍历一列以查找每个位置第一次出现的特殊字符

sql语句循环截取字符串