首页 > 解决方案 > 当日期字段中的值为 NULL 时,创建 SSIS 包以将单词“NULL”提取到 Excel 文件

问题描述

我有一个 SQL 表,其中包含多种格式的字段。客户要求将此表中的数据提取到 Excel 文件中,并希望“NULL”一词出现在有 NULL 的字段中。使用 SSIS 将数据提取到 Excel 时,它会将 NULL 替换为空白。我可以使用表达式 REPLACENULL(ColumnName,"NULL") 使用 SSIS 派生列成功地将 nvarchar 列的 NULL 替换为“NULL”。日期和日期时间列的表达式是什么?如果日期不为空,我想将日期写到 Excel,如果为空,我想写出“NULL”一词。必须有一个简单的方法来做到这一点,对吧?我尝试了以下不起作用的方法:

ISNULL(ColumnName) ? NULL(DT_DBDATE) : ColumnName

标签: sql-serverexcelssis

解决方案


好的,我不再使用手机了,所以我我实际上了解您的需求。

你现在拥有的,真的没有任何意义。该表达式ISNULL(ColumnName) ? NULL(DT_DBDATE) : ColumnName字面上等同于ColumnName(假设ColumnName是 datatype DT_DBDATE)。

您在这里需要做的可能是这样的:

ISNULL(ColumnName) ? "NULL" : (DT_WSTR,10) ColumnName

请注意,这不会使用特定格式,并且可能取决于您的语言设置。如果你想要一个特定的格式,你需要构建和铸造特定的部分。例如,以下将以dd格式返回日期:

RIGHT("00" & ((DT_WSTR,10) DAY(ColumnName)),2)

然而,就我个人而言,我建议尽可能避免使用 SSIS 表达式,并使用 SQL 来完成“繁重”的工作。然后你可以返回varchar你需要的值,并为CONVERT.


推荐阅读