Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何在SSIS派生列中的嵌套if条件表达式中使用TRIM_Sql Server_Etl_Ssis_Nested If - Fatal编程技术网

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

Sql server 如何在SSIS派生列中的嵌套if条件表达式中使用TRIM,sql-server,etl,ssis,nested-if,Sql Server,Etl,Ssis,Nested If,我有一个包含两列的源表-Sndr_Ref和Check_Num 我有一个带有一列的目标表-Txn_代码(nvarchar(50),null) 这是我需要实现的逻辑- 如果Sndr_Ref=[some value]并检查_Num=null,则加载Txn_Code=10 如果Check_Num=[some value]和Sndr_Ref=null,则加载Txn_Code=2 如果Sndr_Ref和Check_Num=[some value],则加载Txn_Code=10 如果Sndr_Ref和Chec

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

我有一个带有一列的目标表-Txn_代码(nvarchar(50),null)

这是我需要实现的逻辑-

  • 如果Sndr_Ref=[some value]并检查_Num=null,则加载Txn_Code=10
  • 如果Check_Num=[some value]和Sndr_Ref=null,则加载Txn_Code=2
  • 如果Sndr_Ref和Check_Num=[some value],则加载Txn_Code=10
  • 如果Sndr_Ref和Check_Num都为Null,则加载Txn_Code=Null
  • 我在SSIS包中创建了一个派生列,并将其映射到Txn_代码。下面是我的派生列的表达式-

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

    上面的表达式在所有记录中插入10。没有插入空值或2。我检查了源表,在目标列中应该有一些10、2和null的记录。我刚刚发现我的源引用列(Sndr_Ref和Check_Num)有很宽的空间。能否请您帮助我如何在上述逻辑中修剪这些宽空间,并在它们为空时将值设置为null?

    不确定您的源数据,但我想您可能还需要检查null:

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

    为什么你们不能在源代码中应用同样的逻辑呢?这样可能会更干净。谢谢你们,我会使用它,稍后在这里更新。我可以在你的表达式中使用TRIM来确保我在修剪宽的空间吗?是的,修剪也是个好主意。如果答案有帮助,请接受。我编辑了它,现在在表达式中包含trim。