JasperReports表达式中的字符串比较

时间:2011-01-31 08:53:22

标签: jasper-reports

使用以下命令查询名为income_source的数据库字段:

SELECT * FROM table_name WHERE income_source LIKE "salaried%"

这将使用“带薪”前缀检索income_source值。在iReport中,该字段的 PrintWhenExpression 值设置为:

$F{income_source}.equals("Salaried")? Boolean.TRUE:Boolean.FALSE  

为什么报表输出与SQL输出不同?

1 个答案:

答案 0 :(得分:5)

有一些问题:

  • SQL中的值"salaried%"与表达式中"Salaried"的值不同。
  • "salaried%"使用%匹配字母d后面的所有文字。
  • PrintWhenExpression
  • 中存在一些冗余

尝试以下表达式:

$F{income_source}.startsWith( "salaried" )

或者:

$F{income_source}.trim().toLowerCase().startsWith( "salaried" )

其中一个应该有用。您还需要确保选中空白时<空> 。否则,表达式变为:

$F{income_source} == null ? Boolean.FALSE :
  $F{income_source}.trim().toLowerCase().startsWith( "salaried" )