提取字符串 Teradata 的中间部分

Extract middle part of string Teradata

我一直在试图弄清楚为什么我的 Teradata 中的 REGEX 表达式有时但并非总是有效:我正在尝试提取中间具有模式的部分字符串:它以 ABC 开头,后跟 3或 4 位数字。

select RegExp_Substr('X886782E-ABC2036-VACCINE COVID', '[ABC]+[0-9]+')

我的逻辑大部分时间都有效,但并非总是有效:它并不总是能识别以 ABC 开头且后跟 3-4 位数字的字符串部分。

在 Cary Stoveland 的帮助下,这两行代码中的任何一行都将有助于提取以 ABC 开头并后跟 3-4 位数字的字符串的中间部分:

select RegExp_Substr('X886782E-ABC2036-VACCINE COVID', 'ABC[0-9]+')
select RegExp_Substr('X886782E-ABC2036-VACCINE COVID', 'ABC\d+')
select RegExp_Substr('X886782E-ABC2036-VACCINE COVID', '\bABC[0-9]+')
select RegExp_Substr('X886782E-ABC2036-VACCINE COVID', '(?<=-)ABC[0-9]+')