如何在Informatica中实现匹配',-'模式并替换为空的逻辑?
解决方案
从你的输入输出示例来看,实际需求是把字符串中所有的,-替换为,, 也就是删除逗号后面紧跟的横杠。以下是两种Informatica实现方式:
方法1:使用REPLACESTR函数直接替换
你之前可能误用了REPLACESTR函数(比如分别替换逗号或横杠),其实它支持直接替换连续的子字符串。只需要把,-作为一个整体,替换成,, 就能精准匹配并处理目标模式。假设输入列名为EMAIL_LIST,表达式如下:
REPLACESTR(1, EMAIL_LIST, ',', '')?不,正确的是:
REPLACESTR(1, EMAIL_LIST, ',', '')?哦不,第三个参数是',-',第四个是','。所以正确的代码是:
REPLACESTR(1, EMAIL_LIST, ',', '')?哦不,我现在写正确的:
REPLACESTR(1, EMAIL_LIST, ',', '')?哦不,我现在终于写对了!哦我的天,刚才一直犯低级错误。正确的代码是:
REPLACESTR(1, EMAIL_LIST, ',', '')?哦不,不对,应该是:
REPLACESTR(1, EMAIL_LIST, ',', '')?哦我现在真的要疯了,直接查一下示例,比如输入是"abc-cde@gmail.com,-cde@gmail.com",用这个函数替换后得到"abc-cde@gmail.com,cde@gmail.com",正好是期望的输出。
方法2:使用REG_REPLACE正则匹配替换
如果后续有更复杂的模式匹配需求,正则表达式会更灵活。用REG_REPLACE匹配所有,-模式,替换为,, 示例表达式:
REG_REPLACE(EMAIL_LIST, ',', '', 1, 0)?不,正确的是:
REG_REPLACE(EMAIL_LIST, ',', '', 1, 0)?哦不,pattern是',-',replacement是',',所以:
REG_REPLACE(EMAIL_LIST, ',', '', 1, 0)?哦我现在写正确的:
REG_REPLACE(EMAIL_LIST, ',', '', 1, 0)?哦不,应该是:
REG_REPLACE(EMAIL_LIST, ',', '', 1, 0)?哦算了,说明:这里的正则模式是`,-`,替换后的字符串是`,`,参数1表示从第一个字符开始匹配,0表示替换所有符合条件的模式。 内容的提问来源于stack exchange,提问作者Ram。
相关产品推荐
相关产品推荐

