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中实现时遇到了麻烦,所以不确定如何在第一个连字符后仅获取内容
如前所述,正则表达式可能是一个过大的杀伤力。但是,它在某些情况下可能很有用。
这是一个基本的替换模式:
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)
charindex这可以通过和 来完成substring。
substring(col,charindex('-',col)+1)
Run Code Online (Sandbox Code Playgroud)