如何让SSIS数据流将'0.00'放在平面文件中?

the*_*eog 9 ssis dataflow flat-file dataflowtask

我有一个带有数据流的SSIS包,它接受一个ADO.NET数据源(只是一个小表),执行一个select*查询,并将查询结果输出到一个平面文件(我也试过拉动整个表而不是使用SQL select).

问题是数据源提取的是一个Money数据类型的列,如果该值不为零,它就会很好地进入文本平面文件(如'123.45'),但当值为零时,它会显示出来在目标平面文件中为".00".我需要知道如何将前导零回到平面文件中.

我已经尝试了各种数据类型的输出(在平面文件连接管理器中),包括货币和字符串,但这似乎没有任何效果.

我在我的选择中尝试了一个case语句,如下所示:

  CASE WHEN columnValue = 0 THEN 
     '0.00' 
  ELSE 
      columnValue 
  END
Run Code Online (Sandbox Code Playgroud)

(仍然导致'.00')

我尝试过这样的变体:

 CASE WHEN columnValue = 0 THEN
     convert(decimal(12,2), '0.00') 
 ELSE 
     convert(decimal(12,2), columnValue) 
 END
Run Code Online (Sandbox Code Playgroud)

(仍然导致'.00')

和:

 CASE WHEN columnValue = 0 THEN
     convert(money, '0.00') 
 ELSE 
     convert(money, columnValue) 
 END
Run Code Online (Sandbox Code Playgroud)

(结果为'.0000000000000000000')

这个愚蠢的小问题就是杀了我.任何人都可以告诉我如何将零Money数据类型数据库值作为'0.00'添加到平面文件中?

小智 9

您可以使用派生列来更改值的格式吗?你试过吗?


ben*_*ers 8

我有完全相同的问题,而soo的答案对我有用.我将数据发送到派生列转换(在数据流转换工具箱中).我将派生列添加为数据类型Unicode String([DT_WSTR])的新列,并使用以下表达式:

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

我希望有所帮助!