You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 12:25:04