0

Informatica 9.1を使用して10進値をvarcharに変換する際に問題が発生しています。ソースとターゲットの両方がOracleにあります。 切り捨て機能を使用すると、自動的に桁の値が "0.01"減少します。 マイソースのデータ型は、金額(小数(38,15))です。次のように、私はそれを切り捨てた後、次の式を使用して文字列に変換しています。TO_CHAR(TRUNC(Amount、2))。 SourceInformatica Powerecenter 9.1.0 Decimal Scaleの問題

ターゲットデータ型はvarchar(255)です。以下は、ターゲットのデータのスナップです。 切り捨て後の量が9.52の場合、値はスナップショットに見られるように9.51に変更されました。 Target

誰でも問題を解決するのに役立つでしょうか?

+0

これは正しくないと思われます。あなたはそのフィールドに他のロジックがないと確信していますか? – Samik

+0

TRUNC(Amt、2)のような値を切り捨てて、それをvarcharに変換します。ロジックはありません。 –

答えて

1

これは、データを表示しているときのように効果があります。たとえば、値が9.5185であると仮定します。クライアントツールで表示すると、9.52に丸められて表示されます。 TRUNC関数は最後の桁を切り捨て、9.51のままにします。

+0

私が以前に述べたように、ソースから来る値は9.520000000000000であり、小数点以下2桁に切り捨ててvarcharに変換する以外は他のロジックはありません。 –

+0

値が9.520000000000000であることをどのように知っていますか?表示/確認方法は何ですか?アプリケーションによっては、値を表示する前に暗黙の丸めを行うものがあります。 – Maciejg

1

Maciejはおそらく正しいでしょう...多くのアプリケーションでは、9.52として表されるものは実際には9.51999999999に格納されます。あなたは私たちに好意を持ち、2の代わりに10の場所に切り捨てて結果を投稿できますか?

0

前述のとおり、to_char関数の動作と、Informaticaでのnumber roundの処理方法があります。 これは、あなたがより多くの「精度」をしたい場合に役立つとインフォマティカのPowerCenterガイドから以下四捨五入

を持つことができます:

のPowerCenter Integration Serviceがダブルとリターンに15より大きい 精度で小数点以下のポートを変換し、TO_CHAR 科学表記の値です。

これを避けるには、高精度を有効にする必要があります。あなたが高い 精度を有効にすると、PowerCenterのは28

の精度に小数点以下をサポートします。注は、高精度で、この問題を解決するにはpropetyタブ

下ワークフローにチェックボックスで有効に高い精度を選択

ワークフローマネージャで、編集するセッションタスクを開きます。 [プロパティ]タブをクリックします。 高精度を有効にするオプションを選択します。 セッションを閉じて保存します。

PowerCenter session using TO_CHAR on decimal field