【问题标题】:How to replace a column result if null with another column result in BIRT如果在 BIRT 中使用另一列结果为空,如何替换列结果
【发布时间】:2021-11-12 06:54:56
【问题描述】:

非常感谢使用 Birt 中的表达式计算列的一些帮助。

我有两列给出结果,一列给出电子邮件地址,一列给出联系号码:电话、手机..

当邮件结果为空时,联系号码列显示一个数字,这些是与 sql 表不同的通信方式。

我想做的是为电子邮件地址和电话号码创建一个新的计算列,当电子邮件地址为空时替换为联系号码 = 联系人,当联系号码为空时替换为电子邮件地址。

我在网上查看了几个类似的问题,发现点击验证时将以下脚本输入birt表达式构建器是可以接受的,但是在我使用的erp软件中没有加载报告。

表达式本身是否正确?

if(row["destination"] == null){
row["contact"];
}
else if(row["contactnumber"] == null){
row["contact"];
}
else{
return true;
}

亲切的问候,

斯图尔特

【问题讨论】:

    标签: java sql expression birt expressionbuilder


    【解决方案1】:

    不,这是不正确的(尽管在语法上是有效的)。

    首先,我们在这里得到的是一个表达式,而不是一个函数。 所以不应该有return 声明。

    显然true 不可能是正确的。其他值(可能)是字符串,所以这也应该是字符串。

    我不太确定您真正想要实现什么。 也许您正在寻找诸如 SQL 中的 COALESCE 或 Oracle SQL 中的 NVL 之类的东西?

    我假设你创建了一个 JS 函数,用 JSfiddle 左右测试它,然后将它放在初始化脚本中并在表达式中调用它。

    【讨论】:

    • 我通过 Eclipse 论坛得到了答案,感谢 Jerry。这是一个运行良好的表达式,当有空值时它会留下一个空格,然后给出下一个在其下方具有值的条目。 if(row["destination"] == null){ row["contactnumber"]; } 其他 { 行 [“目的地”]; }
    • 更简单的是:row["destination"] ||行[“联系人号码”]
    【解决方案2】:

    通过在 Birt 中使用以下 Javascript 作为计算列,如果为 null,则将一列替换为另一列值。

    if(row["destination"] == null){
    row["contactnumber"];
    } 
    else { 
    row["destination"]; }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-12
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-08
      • 1970-01-01
      • 2015-11-18
      相关资源
      最近更新 更多