Informatica(INFA)中是否存在NOT LIKE函数及实现方法咨询
INFA中REG_MATCH实现NOT LIKE功能的方法
已知
REG_MATCH(字段名, '.*ABC.*')等价于LIKE '%ABC%'运算,要实现NOT LIKE效果,可参考以下两种实现方案,对应「满足Not LIKE %DAVID% 且 NOT LIKE %ADAM%」的需求写法如下:
- 方案一:直接对匹配结果取反(推荐,可读性最高)
直接对每个LIKE匹配规则的结果用NOT()取反后,用AND拼接多条件即可,写法如下:
后续如果需要新增其他排除关键词,直接追加NOT(REG_MATCH(你的目标字段, '.*DAVID.*')) AND NOT(REG_MATCH(你的目标字段, '.*ADAM.*'))AND NOT(REG_MATCH(你的目标字段, '.*新关键词.*'))即可,维护成本极低。 - 方案二:单正则实现多条件排除
利用正则的否定前瞻语法,把所有排除关键词放到同一个正则规则里,写法如下:
正则逻辑说明:REG_MATCH(你的目标字段, '^(?!.*(DAVID|ADAM)).*$')^(?!.*(关键词1|关键词2))代表从字符串开头检索,确认全文不存在任意一个排除关键词,后续.*$匹配整个字符串内容,匹配成功即符合所有NOT LIKE条件。
注意事项
- 如果需要忽略大小写匹配,可在正则中增加
(?i)修饰符,例如匹配不区分大小写的DAVID时,正则写为'.*(?i)DAVID.*',取反逻辑保持不变。 - 关键词如果包含
.、*、?等正则特殊字符,需要加反斜杠\转义后再写入规则。
内容的提问来源于stack exchange,提问作者Jan Kevin Osbert Castillo
相关产品推荐
相关产品推荐

