如何提取子串redshift,postgres

时间:2017-07-20 05:43:35

标签: amazon-web-services amazon-redshift

我从列中提取子字符串时遇到问题。

我需要提取一个数字,该数字介于两个字符串之间:<=>level[highlighted]

我使用过这样的东西:

split_part(SPLIT_PART(mycolumn, '<=>', 2), '<br>level[highlighted]', 1)

但是有一个问题,因为字符串<=>在一行中被多次包含(但字符串<br>level[highlighted]在每一行中只有一次)。

1 个答案:

答案 0 :(得分:0)

您可以使用正则表达式来匹配和提取数据:

<强>的Postgres

with _t as (
    select 'foo<=>bar<=>123<br>level[highlighted]'::text as col
)
select
    substring(col, '<=>(\d+)<br>level\[highlighted\]')
from
    _t
;

其中(\d+)是(1个或更多)数字的匹配组;结果将是:

 substring
-----------
 123
(1 row)

<强>红移

使用regexp_substr()可以获得类似的结果。