如何在Redshift(或替代方法)中使用正则表达式捕获组

use*_*064 4 regex sql amazon-redshift

我在redshift列中有一个字段,如下所示:

abcd1234df-TEXT_I-WANT

前10位数字中的字符和数字可以是字母或数字。

如果我使用捕获组正则表达式,则会使用写得不好的表达式,如(\w\w\w\w\w\w\w\w\w\w\W)(.*)grap 2nd group

但是我在redshift中实现时遇到了麻烦,所以不确定如何在第一个连字符后仅获取内容

wp7*_*8de 5

如前所述,正则表达式可能是一个过大的杀伤力。但是,它在某些情况下可能很有用。

这是一个基本的替换模式:

SELECT
    regexp_replace(
      'abcd1234df-TEXT_I-WANT'  -- use your input column here instead
    , '^[a-z0-9]{10}-(.*)$'     -- matches whole string, captures "TEXT_I-WANT" in $1
    , '$1'                      -- inserts $1 to return TEXT_I-WANT
    )
;
Run Code Online (Sandbox Code Playgroud)


Vam*_*ala 1

charindex这可以通过和 来完成substring

substring(col,charindex('-',col)+1)
Run Code Online (Sandbox Code Playgroud)