目次

Search

  1. はじめに
  2. タスクフローとリニアタスクフロー
  3. タスクフロー
  4. リニアタスクフロー

タスクフロー

タスクフロー

toDecimal

toDecimal

文字列または数値を10進数値に変換します。toDecimal関数では、先頭のスペースが無視されます。

構文

util:toDecimal(
value
,
scale
)
次の表に、引数を示します。
引数
必須/
オプション
説明
必須
StringまたはNumericデータ型で指定する必要があります。10進数に変換する値を渡します。
有効なトランスフォーメーション式を必要に応じて入力できます。
スケール
オプション
0から28までの整数リテラル。小数点以下の桁数を指定します。この引数を省略すると、関数は入力値と同じ位取りの値を返します。
この引数は、詳細モードで必要です。

戻り値

0から28までの精度と位取りを持つ10進値。
選択したカラムの値が空の文字列または数値以外の文字であった場合は、ゼロ。
関数にNULL値を渡した場合はNULLです。

次の式は、カラムIN_TAXからの値を使用します。データ型はDecimalで、精度は10、スケールは3です。
util:toDecimal(IN_TAX, 3)
次の表に、一部のサンプル値と戻り値を示します。
IN_TAX
RETURN VALUE
'15.6789'
15.679
'60.2'
60.200
'118.348'
118.348
NULL
NULL
'A12.3Grove'
0
次の式は、[Sales]カラムからの値を使用します。データ型はDecimalで、精度は10、スケールは2です。
util:toDecimal(Sales, 2)
次の表に、一部のサンプル値と戻り値を示します。
Sales
RETURN VALUE
'1234'
1234
'1234.01'
1234.01
1234.00形式の戻り値が必要な場合は、次の式を使用します。
format-number(util:toDecimal('1234', 2), '0.00')
toDecimal関数は、最大28桁の精度をサポートします。32桁など、28桁を超える精度で値を渡した場合は、高精度を有効にした後でも問題が発生します。
ソースからターゲットまで32桁の値をそのまま使用する場合は、32桁の精度でソースからターゲットまでの文字列として値を定義する必要があります。ターゲットデータベースに数値データ型があり、ターゲット定義に文字列データ型がある場合でも、ターゲットデータベースに値をロードできます。ただし、ターゲットデータベースのカラムのデータ型が32桁の精度を受け入れることを確認する必要があります。

10進数のオーバーフロー

小数点の左側の数値のサイズが精度を超えた場合は、10進数の演算がオーバーフローします。
この問題を解決するには、式ポートのスケールや精度を変更し、マッピングのダウンストリームポートを接続して、式の入力データのサイズに合わせた設定を使用します。
以下に例を示します。
数値フィールドのスケールが15に定義され、サイズが28に定義されている場合、このフィールドは小数点の左側に13個、右側に15個の数値を受け入れます。したがって、次の数値は28,15という数値に対して有効になります。
1234567890123.11143
13575.123451234567891
ただし、次の数値は10進数のオーバーフローエラーを引き起こします。
111112222233333.4444
123.1111122222333334