如何在 SSIS 派生列中的嵌套 if 条件表达式中使用 TRIM
Posted
技术标签:
【中文标题】如何在 SSIS 派生列中的嵌套 if 条件表达式中使用 TRIM【英文标题】:How to use TRIM in nested if conditional expression in SSIS derived column 【发布时间】:2014-03-07 17:55:10 【问题描述】:我有一个包含两列的源表 - Sndr_Ref 和 Check_Num
我有一个包含一列的目标表 - Txn_Code (nvarchar(50),null)
这是我需要实现的逻辑-
-
如果 Sndr_Ref = [某个值] 且 Check_Num = null,则加载 Txn_Code = 10
如果 Check_Num = [某个值] 且 Sndr_Ref = null,则加载 Txn_Code = 2
如果 Sndr_Ref 和 Check_Num = [某个值],则加载 Txn_Code = 10
如果 Sndr_Ref 和 Check_Num = Null,则加载 Txn_Code = Null
我在我的 SSIS 包中创建了一个派生列,并将其映射到 Txn_Code。这是我的派生列的表达式-
Sndr_Ref == "" ? (Check_Num == "" ? (DT_WSTR,50)NULL(DT_WSTR,50) : "2") : "10"
上面的表达式是在所有记录中插入 10。没有插入空值或 2。我检查了源表,目标列中应该有一些包含 10、2 和空值的记录。我刚刚发现我的源参考列(Sndr_Ref 和 Check_Num)有宽空间。您能否帮助我如何在上述逻辑中修剪这些宽空间并将值设置为 null 如果它们是空白的?
【问题讨论】:
为什么你不能在 Source 中应用同样的逻辑。那样可能会更干净。 【参考方案1】:不确定您的源数据,但我想您可能还需要检查空值:
ISNULL(Sndr_Ref) || TRIM(Sndr_Ref) == "" ? (ISNULL(Check_Num) || TRIM(Check_Num) == "" ? (DT_WSTR,50)NULL(DT_WSTR,50) : "2") : "10"
【讨论】:
谢谢,我会使用它并在这里更新一下。我也可以在你的表达式中使用 TRIM 来确保我正在修剪宽空间吗? 是的,修剪也是个好主意。如果有帮助,请采纳答案。 我对其进行了编辑,现在在表达式中包含了 trim。以上是关于如何在 SSIS 派生列中的嵌套 if 条件表达式中使用 TRIM的主要内容,如果未能解决你的问题,请参考以下文章