【发布时间】:2021-12-23 20:26:20
【问题描述】:
我正在使用 talend 进行一些 ETL 操作,我试图使用三元运算符进行一些逻辑工作,但从 talend 得到 nullpointer 异常。
我想要做什么 - 我有一个源数据库,它在名为“time_zone”的表中有一个列,它是整数类型,包含枚举,如 - 1,2,3,4.. ...12 在目标表中我想用一些字符串替换这些值是 0 我想在我的目标表中写“EST_GMT_0”。
我尝试了什么 - 之前我尝试了一种可行的方法,但现在我发现该方法存在一些问题 -
String.valueOf(row12.time_zone).replace("0","AST_GMT_4").replace("1","EST_GMT_5").replace("2","CST_GMT_6").replace("3","MST_GMT_7").replace("4","PST_GMT_8").replace("5","AST_GMT_9").replace("6","HST_GMT_10").replace("7","ADT_GMT_3").replace("8","EDT_GMT_4").replace("9","CDT_GMT_5").replace("10","ADT_GMT_6").replace("11","ADT_GMT_7").replace("12","ADT_GMT_8")
之前我是这样做的,但这里的问题是输出不会像预期的那样它还替换了最后一个替换的字符串,因为替换的字符串包含像 EDT_GMT_4 替换方法这样的数字再次用其他一些字符串值替换 4 和直到它不会对更高的值做出反应,因为结果最终输出变为 - MST_GMT_ADT_GMT_MST_GMT_7 像这样
我尝试过的其他方法 -
String.valueOf(row12.time_zone).equals("0")?String.valueOf(row12.time_zone).replace("0","ZERO"):String.valueOf(row12.time_zone).equals("1")?String.valueOf(row12.time_zone).replace("1","One"):String.valueOf(row12.time_zone).equals("2")?String.valueOf(row12.time_zone).replace("2","Two"):String.valueOf(row12.time_zone).equals("3")?String.valueOf(row12.time_zone).replace("3","Three"):String.valueOf(row12.time_zone).equals("4")?String.valueOf(row12.time_zone).replace("4","Four"):String.valueOf(row12.time_zone).equals("5")?String.valueOf(row12.time_zone).replace("5","Five"):String.valueOf(row12.time_zone).equals("6")?String.valueOf(row12.time_zone).replace("6","Six"):String.valueOf(row12.time_zone).equals("7")?String.valueOf(row12.time_zone).replace("7","Seven"):String.valueOf(row12.time_zone).equals("8")?String.valueOf(row12.time_zone).replace("8","Eight"):String.valueOf(row12.time_zone).equals("9")?String.valueOf(row12.time_zone).replace("9","Nine"):row12.time_zone.equals("10")?String.valueOf(row12.time_zone).replace("10","Ten"):String.valueOf(row12.time_zone).equals("11")?String.valueOf(row12.time_zone).replace("11","Eleven"):String.valueOf(row12.time_zone).equals("12")?String.valueOf(row12.time_zone).replace("12","Twelve"):String.valueOf(row12.time_zone)
这是我尝试的第二种方法,但得到了NullPointerException
如何解决这个问题?
【问题讨论】: