11

ADO.NET データ ソース (小さなテーブルのみ) を受け取り、select * クエリを実行し、クエリ結果をフラット ファイルに出力するデータ フローを備えた SSIS パッケージがあります (テーブル全体をプルすることも試みました)。 SQL select を使用しない)。

問題は、データ ソースが Money データ型の列を取得し、値が 0 でない場合はテキスト フラット ファイルに問題なく ('123.45' のように) 取り込まれますが、値が 0 の場合は表示されることです。宛先フラット ファイルでは「.00」として。先頭のゼロをフラット ファイルに戻す方法を知る必要があります。

通貨や文字列など、(フラット ファイル接続マネージャーで) 出力用にさまざまなデータ型を試しましたが、効果がないようです。

次のように、select で case ステートメントを試しました。

  CASE WHEN columnValue = 0 THEN 
     '0.00' 
  ELSE 
      columnValue 
  END

(それでも結果は「.00」になります)

私はこのようなバリエーションを試しました:

 CASE WHEN columnValue = 0 THEN
     convert(decimal(12,2), '0.00') 
 ELSE 
     convert(decimal(12,2), columnValue) 
 END

(それでも結果は '.00' になります)

と:

 CASE WHEN columnValue = 0 THEN
     convert(money, '0.00') 
 ELSE 
     convert(money, columnValue) 
 END

(結果は「.000000000000000000」)

このばかげた小さな問題は私を殺しています。ゼロの Money データ型データベース値を「0.00」としてフラット ファイルに取得する方法を誰か教えてもらえますか?

4

6 に答える 6

11

私はまったく同じ問題を抱えていましたが、sooの答えがうまくいきました。データを派生列変換 (データ フロー変換ツールボックス内) に送信しました。派生列をデータ型 Unicode 文字列 ([DT_WSTR]) の新しい列として追加し、次の式を使用しました。

価格 < 1 ? "0" + (DT_WSTR,6)価格 : (DT_WSTR,6)価格

それが役立つことを願っています!

于 2010-05-20T17:42:38.893 に答える
9

派生列を使用して値の形式を変更できますか? あなたはそれを試しましたか?

于 2010-05-20T14:59:55.330 に答える
4

高度なエディターを使用して列を から に変更double-precision floatdecimal、次にScaleを 2に設定しました。

ここに画像の説明を入力

于 2015-03-23T02:54:36.993 に答える
1

テキストファイルにエクスポートするので、フォーマット済みのデータをエクスポートするだけです。

クエリで実行するか、派生列を作成するか、より快適なものであれば何でもかまいません。

列の幅を 15 文字にすることにしました。数字を期待するシステムにインポートする場合、これらのゼロは無視する必要があります...では、フィールドの長さを標準化しないのはなぜですか?

SQL での簡単な解決策は次のとおりです。

    select 
    cast(0.00 as money) as col1
    ,cast(0.00 as numeric(18,2)) as col2 
    ,right('000000000000000' + cast( 0.00 as varchar(10)), 15) as col3
    go

 col1                  col2                 col3
 --------------------- -------------------- ---------------
                 .0000                  .00 000000000000.00

「0.00」を列名に置き換えるだけで、FROM table_nameなどを追加することを忘れないでください.

于 2010-05-20T19:48:32.853 に答える