我在 VS 2015 上使用 SSIS,并使用 OLE DB 源和 OLE DB 目标(SQL Server 2017 上的表)进行测试。问题是源表我有一个字段 varchar(10) 类型,值是小数(记住这个字段是 varchar(10))。
TB_ 的值是:
在集成服务上,我使用了 OLE DB 源、数据转换和 OLE DB 目标。
在 Data Conversion Component 上,我将类型设置为数字(之后我尝试设置为十进制):
在 OLE DB 目标上,我映射了字段:
但是,当我执行包时,OLE DB 目标具有以下值:
CAMPO2 字段的正确值将是 4.51、20.5 和 98.54
结构表 OLE DB 目标是:
有什么建议吗?
最佳答案
问题原因
主要原因是小数点分隔符,varchar列包含逗号,
而不是点。
实验
如果我们尝试将以下文本转换为十进制 "1,2"
,结果为:
12.00
如果我们尝试将以下文本转换为十进制 "1.2"
,结果为:
1.20
解决方案
不使用数据转换转换,而是尝试使用具有以下表达式的派生列:
(DT_DECIMAL,2)REPLACE([CAMPO2],",",".")
关于sql-server - SISS - 将 DT_STR 转换为 DT_DECIMAL 的问题(小数部分变为整数部分编号),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57101113/