我在ssis中为2个表使用了2次查找。如果另一个表中的列为null,则我将使用另一个值,反之亦然。 如何实现这一个?
答案 0 :(得分:0)
以下是一个如何做到这一点的想法:
查找组件:
将另一个表的列添加为新列(如“column2”)。
查找后放置一个派生列:
派生列名称将是您的初始列,将其设置为替换原始列。
在表达式中:
REPLACENULL(column,column2)
答案 1 :(得分:0)
使用查找组件,并添加新列(查找表中的对应值)
假设您的列名称为LookupColumn1
且LookupColumn2
且OutColumn
是预期的输出列:
第一种方法
LookupColumn1
和LookupColumn2
标记为输入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}}