Teradata 中的字边界 RegEx

Word boundaries RegEx in Teradata

考虑 2 个字符串,我试图找到姓氏 ng 的匹配项并忽略其他词,例如 string, working, laughing:

t1 = "Strings are fun"
t2 = "Andrew ng is great"

在Python中,我可以使用单词边界,例如:

> re.findall('\bnb\b, t1)
> []
> re.findall('\bnb\b, t2)
> ng

如何在 Teradata 中复制 \b 以便 SELECT REGEXP_SIMILAR(t1, pattern, 'i') returns 0 & SELECT REGEXP_SIMILAR(t2, pattern, 'i') returns 1?

Teradata RegExes 基于 PCRE 并支持 \b,但 RegExp_Similar 需要完全匹配,您需要添加 .*:

select 'Andrew ng is great' as s
   ,regexp_similar(s,'.*\bng\b.*')       -- 1
   ,regexp_substr(s,'\bng\b', 1, 1, 'i') -- ng


select 'Strings are fun' as s
   ,regexp_similar(s,'.*\bng\b.*')       -- 0
   ,regexp_substr(s,'\bng\b', 1, 1, 'i') -- NULL