2011-01-31 33 views
2

を表現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出力の​​違いは何ですか?

答えて

5

いくつかの問題があります。

  • "salaried%"がSQLには、式の中"Salaried"の値とは異なります。
  • "salaried%"は、dの後のすべてのテキストと一致するように%を使用します。
  • PrintWhenExpressionに少し冗長性があります。

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

    または::動作するはずですこれらの

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

    一つ

は、次の式を試してみてください。 nullがチェックされている場合は、をブランクにする必要があります。それ以外の場合、式は次のようになります。

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