2017-10-02 13 views
-5

Talend Open StudioのtMapコンポーネントのDatabaseの入力文字列を比較したいと思います。もし私のStringが "{}"と等しいなら、 "nodata"という文字列を入れたいと思います。それ以外の場合は、元の入力をそのまま残します。等しいはStringからbooleanに変換できません

TMAP内での発現/フィルタでの私のコード:

詳細メッセージ:型の不一致:

はあなたを行いブール文字列から変換することはできませんが、私は取得しています

(row1.parameter).equals("{}")?"nodata":row1.parameter 

エラー何か提案がありますか?

+2

は、どのようなタイプの 'row1.parameter'のですか?この式を割り当てる変数はどのような型ですか? – QBrute

+0

カッコ内の疑問符の前に式全体を囲んでみたとしますか? –

+0

式を '((row1.parameter).equals(" {} "))?" nodata ":row1.parameter'に変更します。また、値を返す他の変数も文字列であることを確認してください。 – procrastinator

答えて

2

は、あなたの表現は、文字列を返すので...あなたはブールにそれを割り当てる

String someVariable = row1.parameter.equals("{}") ? "nodata" : row1.parameter; 

のように、String変数に結果を代入してみ?はいの場合は、型の不一致の原因となります。

+0

フィルター/式フィールドに式を入力しました。私の入力(row1.parameterはString、私の出力test.parameterはString)です。私はそれを変数に割り当てていない(tMapのVarフィールド)。 あなたの答えが機能します。私はtMapの結果をvarに代入しました。ありがとうございます:) – ggx2

0

あなたが「パラメータ」を割り当てているあなたの出力フィールドは、「文字列」フィールドではありませんし、「ブール」として設定されているようにあなたは、「パラメータ」フィールドを維持していると仮定すると、それが聞こえる:

enter image description here

だから、コールの最初のポイントは、「文字列」のタイプに出力を変更/確認するには、次のようになります。

enter image description here

+0

私の入力と出力は文字列ですが、式を出力列に入れました。次に、式をtMapのvarフィールドに入れました。すべて正常に動作します。答えてくれてありがとう :) – ggx2

関連する問題