如何在SSIS派生列中的嵌套if条件表达式中使用TRIM

时间:2014-03-07 17:55:10

标签: sql-server etl ssis nested-if

我有一个包含两列的源表--Sndr_Ref和Check_Num

我有一个包含一列的目标表 - Txn_Code(nvarchar(50),null)

这是我需要实现的逻辑 -

  1. 如果Sndr_Ref = [some value]且Check_Num = null,则加载Txn_Code = 10
  2. 如果Check_Num = [某个值]且Sndr_Ref = null,则加载Txn_Code = 2
  3. 如果Sndr_Ref和Check_Num都是[某个值],则加载Txn_Code = 10
  4. 如果Sndr_Ref和Check_Num都为Null,则加载Txn_Code = Null
  5. 我在SSIS包中创建了一个派生列,我将其映射到Txn_Code。这是我的派生列的表达式 -

    Sndr_Ref == "" ? (Check_Num == "" ? (DT_WSTR,50)NULL(DT_WSTR,50) : "2") : "10"
    

    上面的表达式是在所有记录中插入10。没有插入空值或2。我检查了源表,目标列中应该有一些记录包含10,2和null。我刚刚发现我的源参考列(Sndr_Ref和Check_Num)具有宽空间。请问如何在上面的逻辑中修剪那些宽空间,如果它们是空白的话,将值设置为null?

1 个答案:

答案 0 :(得分:0)

不确定您的源数据,但我猜您可能还需要检查空值:

ISNULL(Sndr_Ref) || TRIM(Sndr_Ref) == "" ? (ISNULL(Check_Num) || TRIM(Check_Num) == "" ? (DT_WSTR,50)NULL(DT_WSTR,50) : "2") : "10"