使用Informatica中的REG_MATCH和REPLACESTR函数替换后缀字符

问题描述 投票:0回答:1

我们有一个业务场景,其中源数据被填充为 '美国第一金融证券 I',其中 'I' 被填充为后缀 。我们需要从后缀中删除字符 'I' 并将数据导出为 'FIRST FINANCIAL SECURITIES OF AMERICA',但是当我们在表达式转换中使用以下代码时,它会删除所有出现的字符 'I' 并给出接下来输入字符串'FRST FNANCAL SECURTES OF AMERCA'。任何人都可以帮我使用 REG_MATCH 和 REPLACESTR 实现上述逻辑吗?

**--parse suffix txt from last name**
IIF(REG_MATCH(LAST_NAME,'.*\sI\s.*')  OR REG_MATCH(LAST_NAME,'.*\sI'),REPLACESTR(1,LAST_NAME,'I',''),
IIF(REG_MATCH(LAST_NAME,'.*\sII\s.*')  OR REG_MATCH (LAST_NAME,'.*\sII'),REPLACESTR(1,LAST_NAME,'II',''),
IIF(REG_MATCH(LAST_NAME,'.*\sIII\s.*')  OR REG_MATCH(LAST_NAME,'.*\sIII'),REPLACESTR(1,LAST_NAME,'III',''),
IIF(REG_MATCH(LAST_NAME,'.*\sIV\s.*')  OR REG_MATCH(LAST_NAME,'.*\sIV'),REPLACESTR(1,LAST_NAME,'IV',''),
IIF(REG_MATCH(LAST_NAME,'.*\sV\s.*')  OR REG_MATCH(LAST_NAME,'.*\sV'),REPLACESTR(1,LAST_NAME,'V',''),
IIF(REG_MATCH(LAST_NAME,'.*\sJR\s.*')  OR REG_MATCH(LAST_NAME,'.*\sJR'),REPLACESTR(1,LAST_NAME,'JR',''),
IIF(REG_MATCH(LAST_NAME,'.*\sJR.\s.*')  OR REG_MATCH(LAST_NAME,'.*\sJR.'),REPLACESTR(1,LAST_NAME,'JR.',''),
IIF(REG_MATCH(LAST_NAME,'.*\sSR\s.*')  OR REG_MATCH(LAST_NAME,'.*\sSR'),REPLACESTR(1,LAST_NAME,'SR',''),
IIF(REG_MATCH(LAST_NAME,'.*\sSR.\s.*')  OR REG_MATCH(LAST_NAME,'.*\sSR.'),REPLACESTR(1,LAST_NAME,'SR.',''),
IIF(REG_MATCH(LAST_NAME,'.*\s3RD\s.*')  OR REG_MATCH(LAST_NAME,'.*\s3RD'),REPLACESTR(1,LAST_NAME,'3RD',''),
LAST_NAME))))))))))
informatica informatica-powercenter
1个回答
0
投票

你有没有尝试过类似的事情:

IIF(REG_MATCH(LAST_NAME, '.*\\sI$'),  <- NOTE: no trailing asterix
REG_REPLACE(LAST_NAME, '\\sI$', ''),
SOURCE_COLUMN)

如果

REG_MATCH
中的任何位置都有一个被空格包围的
true
,则您的第一个
I
将返回
LAST_NAME
。我认为这不是我们所希望的。 然后你在我认为应该使用
REPLACESTR
的地方使用
REG_REPLACE
。如果有进一步的问题,请查看并告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.