在SSIS中替换NULL

时间:2017-02-23 04:18:09

标签: sql-server ssis

我在ssis中为2个表使用了2次查找。如果另一个表中的列为null,则我将使用另一个值,反之亦然。 如何实现这一个?

2 个答案:

答案 0 :(得分:0)

以下是一个如何做到这一点的想法:

查找组件:

将另一个表的列添加为新列(如“column2”)。

查找后放置一个派生列:

派生列名称将是您的初始列,将其设置为替换原始列。

在表达式中:

REPLACENULL(column,column2)

答案 1 :(得分:0)

使用查找组件,并添加新列(查找表中的对应值

假设您的列名称为LookupColumn1LookupColumn2OutColumn是预期的输出列:

第一种方法

  • 添加脚本组件
  • LookupColumn1LookupColumn2标记为输入
  • 添加输出列OutColumn (数据类型:DT_STR或DT_WSTR)
  • 在您的脚本中编写以下代码(在ProcessInputRow Sub 中):

    Public Overrides Sub InputBuffer0_ProcessInputRow(ByVal Row As InputBuffer0) 
    
        If Not Row.LookUpColumn2_IsNull AndAlso _
           Not String.IsnullOrEmpty(Row.LookUpColumn2.Trim) Then
    
            Row.OutColumn = Row.LookUpColumn2.Trim
    
        ElseIf Not Row.LookupColumn1_IsNull AndAlso _
           Not String.IsnullOrEmpty(Row.LookupColumn1.Trim) Then
    
            Row.OutColumn = Row.LookupColumn1.Trim
    
        Else 
    
            Row.OutColumn_IsNull = True
    
        End If
    
    End Sub
    

脚本逻辑:如果LookupColumn2不为空或空,则将其值分配给OutColumn,如果LookupColumn2为空或空,则检查{{1}的值}:如果它不为null或为空,则将其值分配给LookupColumn1,否则OutColumn为NULL

第二种方法

使用以下表达式

创建OutColumn
derrived column

详细了解REPLACENULL(LookupColumn2,LookupColumn1) <{1}}