如何在 SSIS 条件拆分中比较两个 GUID?

Tim*_*son 4 sql sql-server ssis etl conditional-split

我已经看到了这个问题,我尝试了它的建议,但没有成功(参见下面的尝试 1)。

我在我的条件拆分中尝试了以下条件但没有成功。我已经检查了在符合条件的条件拆分之前存在的记录,所以我应该从条件拆分中获取数据,但我没有得到任何数据。我还验证了其他两个条件独立于 GUID 比较正常工作。

我尝试了很多方法来实现这一目标,但没有成功:

尝试 1:

CompanyGUIDString = (DT_WSTR,50)CompanyID  // In Derived Column

// Conditional Split Condition
ISNULL(AssociationID) ==  FALSE  && ccseq_associationtype == 2 && CompanyGUIDString == "7C46BB0B-AEF3-E611-80E0-005056B33317" 
Run Code Online (Sandbox Code Playgroud)

尝试 2:

ISNULL(AssociationID) ==  FALSE  && ccseq_associationtype == 2 && CompanyID == "7C46BB0B-AEF3-E611-80E0-005056B33317" 
Run Code Online (Sandbox Code Playgroud)

尝试 3:

ISNULL(AssociationID) ==  FALSE  && ccseq_associationtype == 2 && (DT_WSTR, 50) CompanyID == (DT_WSTR,50) "7C46BB0B-AEF3-E611-80E0-005056B33317" 
Run Code Online (Sandbox Code Playgroud)

尝试 4:

ISNULL(AssociationID) ==  FALSE  && ccseq_associationtype == 2 && (DT_STR, 50, 1252) CompanyID == (DT_STR, 50, 1252) "7C46BB0B-AEF3-E611-80E0-005056B33317"
Run Code Online (Sandbox Code Playgroud)

尝试 5:

ISNULL(AssociationID) ==  FALSE  && ccseq_associationtype == 2 && (DT_GUID) CompanyID == (DT_GUID) "7C46BB0B-AEF3-E611-80E0-005056B33317"  
Run Code Online (Sandbox Code Playgroud)

Tim*_*son 5

我发现了答案。当您将 GUID 转换为字符串时,强制转换会将“{}”添加到 GUID。下面的代码将正常工作。

(ISNULL(AssociationID) ==  FALSE ) && (ccseq_associationtype == 2) && (UPPER((DT_WSTR,50)CompanyID) == UPPER((DT_WSTR,50)"{7C46BB0B-AEF3-E611-80E0-005056B33317}"))
Run Code Online (Sandbox Code Playgroud)