我们有一个业务场景,其中源数据被填充为 '美国第一金融证券 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))))))))))
你有没有尝试过类似的事情:
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
。如果有进一步的问题,请查看并告诉我。