Talend tJavaRow模块条件判断失效问题求助
Talend tJavaRow列赋值问题排查与解决
问题原因
- 字符串比较逻辑错误:Java里
==是对比字符串对象的内存引用,不是实际内容。哪怕两个字符串内容完全一致,只要是不同的对象实例,==都会返回false,这是所有结果都为"Non"的核心原因。 - 需求匹配偏差:你要的是判断列包含"DIRECTEUR",但原代码是判断字符串完全等于"DIRECTEUR",这会漏掉那些内容里包含该关键词但不是完全一致的数据。
解决办法
情况1:仅匹配完全等于"DIRECTEUR"的内容
添加非空判断避免空指针异常,用equals()做内容对比:
if (input_row.Fonction_libelle != null && input_row.Fonction_libelle.equals("DIRECTEUR")) { output_row.Directeur_Oui_Non = "Oui"; } else { output_row.Directeur_Oui_Non = "Non"; }
如果需要忽略大小写(比如兼容"Directeur"或"directeur"),改用equalsIgnoreCase():
if (input_row.Fonction_libelle != null && input_row.Fonction_libelle.equalsIgnoreCase("DIRECTEUR")) { output_row.Directeur_Oui_Non = "Oui"; } else { output_row.Directeur_Oui_Non = "Non"; }
情况2:匹配包含"DIRECTEUR"的内容(符合你的原始需求)
用contains()方法判断是否包含目标字符串,同样加非空判断:
if (input_row.Fonction_libelle != null && input_row.Fonction_libelle.contains("DIRECTEUR")) { output_row.Directeur_Oui_Non = "Oui"; } else { output_row.Directeur_Oui_Non = "Non"; }
若需忽略大小写,先统一转成大写再判断:
if (input_row.Fonction_libelle != null && input_row.Fonction_libelle.toUpperCase().contains("DIRECTEUR")) { output_row.Directeur_Oui_Non = "Oui"; } else { output_row.Directeur_Oui_Non = "Non"; }
内容的提问来源于stack exchange,提问作者Onyx
相关产品推荐
相关产品推荐

