Sql server 如何在SSIS派生列中的嵌套if条件表达式中使用TRIM
我有一个包含两列的源表-Sndr_Ref和Check_Num 我有一个带有一列的目标表-Txn_代码(nvarchar(50),null) 这是我需要实现的逻辑-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 == "" ? (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。