我正在使用ssis在数据库中以123456
或12.3456
的形式获取数据,我希望转换给定列中的所有数据,例如12.3456
,有人可以帮忙吗?
答案 0 :(得分:0)
如果您的目标是将每个值限制为小数点后两位,请使用round函数作为“派生列转换”中的表达式。
ROUND(((DT_NUMERIC)(SourceValue)), 2)
答案 1 :(得分:0)
类似的东西:
(case when value > 100 then value / 10000.0
else value
end)
答案 2 :(得分:0)
添加具有以下表达式的派生列转换:
检查第三位数字是否为分隔符(点),然后将其保留为列值,否则将值转换为字符串并将分隔符添加到第三位
SUBSTRING((DT_WSTR,50)[SourceColumn],3,1) == "."
? (DT_DECIMAL,10)[SourceColumn]
: (DT_DECIMAL,10)(LEFT((DT_WSTR,50)[SourceColumn],2) + "." + SUBSTRING((DT_WSTR,50)[SourceColumn],3,LEN((DT_WSTR,50)[SourceColumn] - 2)))
注意:您可以删除类型转换,因为添加了它们是因为您没有提供任何有关列数据类型的信息