Informatica中使用REG_MATCH和REG_REPLACE处理前缀后缀替换求助
Informatica 字符串处理问题修复方案
原代码存在的问题
- 语法不完整:两个
IIF函数都缺少闭合括号,且未指定else分支(Informatica的IIF必须包含条件、真结果、假结果三个参数) - 正则匹配逻辑错误:
- 处理后缀
- I时,原正则.*\sI\s.*/.*\sI会匹配字符串中间包含空格+I的情况,而非仅末尾的- I;且REG_REPLACE(LAST_NAME,'I$','')只删掉了末尾的I,没去掉前面的- - 处理前缀
JR时,REPLACESTR会替换所有JR字符串,而非仅开头的JR;匹配逻辑也没限定开头位置
- 处理后缀
修正后的代码
IIF(REG_MATCH(LAST_NAME, '.* - I$'), REG_REPLACE(LAST_NAME, ' - I$', ''), IIF(REG_MATCH(LAST_NAME, '^JR '), REG_REPLACE(LAST_NAME, '^JR ', ''), LAST_NAME ) )
代码说明
- 第一层
IIF:匹配末尾是- I的字符串,用REG_REPLACE删掉末尾的- I - 第二层
IIF:如果不满足第一个条件,再判断是否以JR开头,用REG_REPLACE删掉开头的JR - 最后的
LAST_NAME是else分支:如果都不满足,返回原字符串
测试验证
- 输入
HOUSE ACCOUNT - WELLS FARGO - I→ 输出HOUSE ACCOUNT - WELLS FARGO - 输入
JR INSURANCE BROKERAGE INC→ 输出INSURANCE BROKERAGE INC - 输入其他不匹配的字符串(如
JOHN DOE)→ 输出原字符串
内容的提问来源于stack exchange,提问作者karthik
相关产品推荐
相关产品推荐

