Teradata 如何删除以某个单词开头和结尾的子字符串?

Teradata 如何删除以某个单词开头和结尾的子字符串?,teradata,Teradata,我正在尝试使用teradataregex_replace删除所有以单词DOCNAME开头,以字符结尾的子字符串 这是我试过的 SEL REGEXP_REPLACE(txt, 'DOCNAME(.*?);','',1,0,'i') new_txt FROM testTable ; 但这并没有起到任何作用。问题在哪里 这是我的绳子 PUBLIC(验证nbr);业主(测试计划);DOCNAME(基础设施);所有者(获取库存);DOCNAME(空);文件名(存货);PRAC(库存) 上面的查询

我正在尝试使用teradata
regex_replace
删除所有以单词
DOCNAME
开头,以字符
结尾的子字符串

这是我试过的

SEL REGEXP_REPLACE(txt, 'DOCNAME(.*?);','',1,0,'i') new_txt  
FROM testTable
; 
但这并没有起到任何作用。问题在哪里


这是我的绳子

PUBLIC(验证nbr);业主(测试计划);DOCNAME(基础设施);所有者(获取库存);DOCNAME(空);文件名(存货);PRAC(库存)


上面的查询返回相同的字符串,但我需要
DOCNAME(…)已删除(上面有3个文件名,所有文件名都需要删除)

在参数前面需要一个反斜杠,以使正则表达式引擎看到文本参数字符,否则正则表达式引擎认为您正在定义一个组。试试这个:

SEL REGEXP_REPLACE(txt, 'DOCNAME\(.*?\);','',1,0,'i') new_txt  
FROM testTable
; 
请注意,这将在其余列表元素之间留下2个空格。我怀疑这无关紧要,但如果有,则需要在REGEXP\u字符串的开头或结尾添加一个空格


另外请注意,如果REGEXP_REPLACE似乎没有任何作用,则regex没有找到匹配项并返回原始输入字符串。如果您确信输入正确,这就是您的regexp\u字符串错误的线索。

您应该在帖子中添加一些示例数据,以便人们可以验证您的regex是否正确,和/或进行他们自己的测试谢谢。我添加了我的字符串。我在java中使用了完全相同的正则表达式,它工作正常。为什么它在teradata中不起作用呢?regex有不同的方言,teradata主要支持Perl变体。问号很重要,否则
*
会变得贪婪。顺便说一句,这可以进一步简化为
“DOCNAME.*?;”