tMap多匹配条件过滤数据无结果,请求技术协助
解决tMap多条件过滤无数据的问题
先验证数据源本身
- 先确认你的数据库中确实存在同时包含
_A、B_、CD_、_DC这四个子串的记录。可以直接用SQL查询验证:
如果SQL查询也没有返回数据,说明数据源本身没有符合条件的记录,无需调整tMap配置。SELECT * FROM your_table WHERE Column1 LIKE '%\_A%' AND Column1 LIKE '%B\_%' AND Column1 LIKE '%CD\_%' AND Column1 LIKE '%\_DC%';
检查tMap过滤条件的写法
- 确认Column1的数据类型为字符串类型(如String、Varchar),非字符串类型调用
contains()方法会直接失效。 - 如果你实际需求是匹配任意一个子串而非全部,将条件中的
&&替换为||:Column1.contains("_A") || Column1.contains("B_") || Column1.contains("CD_") || Column1.contains("_DC") - 若必须同时满足全部子串,可改用正则表达式简化条件,避免多次
contains()调用的潜在问题:// 不限制子串顺序的写法 Column1.matches("(?=.*_A)(?=.*B_)(?=.*CD_)(?=.*_DC).*")
调试排查技巧
- 在tMap中新增临时输出列,单独输出每个条件的判断结果:
has_A:Column1.contains("_A")has_B:Column1.contains("B_")has_CD:Column1.contains("CD_")has_DC:Column1.contains("_DC")
运行作业后查看这些列的结果,就能快速定位是哪个条件过滤掉了所有数据。
内容的提问来源于stack exchange,提问作者Raj Patil
相关产品推荐
相关产品推荐

