首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SSIS从CSV派生的列(将字符串转换为浮点型)

SSIS从CSV派生的列(将字符串转换为浮点型)
EN

Stack Overflow用户
提问于 2019-12-09 22:39:28
回答 1查看 479关注 0票数 2

我有一个CSV,如下所示。该列有一些空行,CSV以字符串的形式给出值。但我想让它像‘3.00000’那样有5个小数。首先,我需要替换‘,’符号,并替换我使用的派生列表达式:(DT_R8)REPLACE(ISNULL(Col1) ? "0.0000" : Col1,",","."),但它不起作用。你们知道更好的表达方式吗?该列如下所示:

代码语言:javascript
运行
复制
+---------+
|  Col1   |
+---------+
| 3,00000 |
|         |
| 4,00000 |
| 6.56565 |
|         |
| 4.54545 |
+---------+
EN

回答 1

Stack Overflow用户

发布于 2019-12-10 00:56:15

我相信你需要在这里看两件事。首先,其中包含逗号的单元格很可能被识别为字符串,因此它们将使用引号的文本限定符。如果您没有在SSIS中显式地设置它,那么SSIS将保留引号,然后您将无法将该字符串转换为数字。为了确认,在您的连接管理器上,检查您的预览,如果您的数字有双引号,如下所示,那么您需要将文本限定符设置为引号。

设置文本限定符之前的快照:

现在,如果是这种情况,您需要转到常规,并确保您的文本限定符设置为“如下所示

完成后,您可以验证预览现在是否已修复

您遇到的问题是假设您正在处理空值。当您的列是从平面文件导入的string类型时,情况并非如此。您在这里处理的是一个空字符串。因此,您需要将表达式修改为:

代码语言:javascript
运行
复制
(DT_R8)REPLACE(Col1 == "" ? "0.0000" : Col1,",",".")

最后,您是否认识到将",“替换为".”会不会导致“300000”被转换成3.0?请确保这是预期的行为。

遵循上面的语句将得到以下派生列

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59251143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档