首页 > 解决方案 > Teradata REGEX 或 SUBSTR 删除两个 * 和星号之间的文本?

问题描述

我正在使用一个数据集处理 teradata,该数据集具有以下格式的数据多次出现:

*6A*H.ORTHO I
*4A*IMP
*16A*T.IMPLANTS
*2A*HIMPLANTS
*9A*IMP
*5A*F.IMPLANT
*6A*DIMP
*4A*TISSUE
*5A*KIMP
*7A*IMP
*10A*D.IMP
*3A*W.LSH
*10A*IMP
*16A*IMP
*22A*T.IMPLANTS

在上面的数据集中,我试图在第二次出现星号后提取所有内容。IEDIMP、IMP、T.IMPLANTS、F.IMPLANT 等。

我尝试使用 SUBSTR 并接近使用:

SUBSTR(TRIM(FSS.Surgical_Inventory_Code),1,
                    INDEX(TRIM(FSS.Surgical_Inventory_Code),'*')-1)

但是,这只返回第一个 * 之后的数据。

我相信解决问题的最佳解决方案是使用 REGEX 表达式或 SUBSTR。teradata 中有一个名为 REGEXP_SUBSTR 的函数。我不确定如何创建一个 REGEX 语句来解决我的问题。

标签: regexteradatasubstrteradata-sql-assistant

解决方案


如果您的字符串中只有 2 个星号,则可以使用 STRTOK:

strtok(<source string>,'*',2)

推荐阅读