SSIS 空值问题

Posted

技术标签:

【中文标题】SSIS 空值问题【英文标题】:SSIS Null Value Questions 【发布时间】:2009-07-09 19:30:24 【问题描述】:

我有一个包含 5 个字符串列的表,所有列都可以是 NULL。从该表中读取数据后,我想将任何空值转换为空字符串。原因是我需要将这些列与同一架构的另一个表中的列进行比较(使用条件拆分),空值会导致比较结果为 NULL。

SSIS 中是否有任何功能可以让我将 NULL 转换为空字符串,或者根本不必处理 NULL?

【问题讨论】:

【参考方案1】:

正确的语法是 (ISNULL(column)?"":column) 没有 IIF

【讨论】:

【参考方案2】:

您可以使用派生列转换。我现在没有打开 VS,但你会使用类似的东西:

IIF(ISNULL(column)?"":column)

作为表达式,并让它替换原始列。


更新:如下所示,IIF 应该被删除。

ISNULL(column)?"":column

【讨论】:

【参考方案3】:

在您的查询中按如下方式包装您的列...

SELECT ISNULL(col1,'') AS [col1]
      ,ISNULL(col2,'') AS [col2]
      ,ISNULL(col3,'') AS [col3]
      ,ISNULL(col4,'') AS [col4]
      ,ISNULL(col5,'') AS [col5]

【讨论】:

这是我作为 SQL DBA/DB 开发人员更喜欢的版本,如果您要为输入指定查询,那么在列周围添加 ISNULL 非常容易,而且您不需要这样做不必在 SSIS 中进行任何额外的转换。如果您正在开发许多 SSIS 包,其中的表有时允许 NULL,有时不允许,您还可以创建一个脚本来创建带有 ISNULL 函数的 SELECT 语句,仅用于可为空的列。【参考方案4】:

在您的查询中,您可以这样使用

CASE Tablename.ColumnName WHEN NULL THEN ' ' ELSE Tablename.ColumnName END AS 'Column Name'

【讨论】:

以上是关于SSIS 空值问题的主要内容,如果未能解决你的问题,请参考以下文章

SSIS读取Excel空值问题解决

为啥派生列组件的表达式不适用于 SSIS 中的空值?

SSIS中对空值的处理

SSIS和NULL值

使用ssis导入文本文件时如何插入主键

如何将具有隐藏字符的空白/单元格转换为空值或以其他方式删除隐藏字符