4 Stimmen

String-Vergleiche in JasperReports-Ausdrücken

Ein Datenbankfeld namens income_source abgefragt wird:

SELECT * FROM table_name WHERE income_source LIKE "salaried%"

Damit werden abgerufen income_source Werte mit dem Präfix "Angestellter". In iReport wird der PrintWhenExpression Der Wert für das Feld wird wie folgt festgelegt:

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

Warum weicht die Berichtsausgabe von der SQL-Ausgabe ab?

7voto

Dave Jarvis Punkte 29378

Es gibt ein paar Probleme:

  • Der Wert "salaried%" in der SQL unterscheidet sich vom Wert von "Salaried" in dem Ausdruck.
  • Der Wert "salaried%" verwendet die % um den gesamten Text nach dem Buchstaben d .
  • Es gibt eine gewisse Redundanz in der PrintWhenExpression .

Versuchen Sie den folgenden Ausdruck:

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

Oder:

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

Eine davon sollte funktionieren. Sie sollten auch sicherstellen Leer, wenn null geprüft wird. Andernfalls wird der Ausdruck zu:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X