I'm using a Lookup component to add a DT_GUID column named cat_id to a data flow, which is used in a downstream Derived Column component to add a DT_WSTR column named value. The DC expression simply casts the uniqueidentifier to the desired type: (DT_WSTR, 434)cat_id
But when the values are persisted in the destination table's nvarchar(434) column, they have braces around them, e.g. {F475DB7F-5CB0-4EE1-9BF2-758C77D7A6D7}
What is introducing those braces, and what do I need to do to prevent it?
You may remove the braces by using SUBSTRING function in the DC expression:
http://msdn2.microsoft.com/en-us/library/ms137541.aspx
SUBSTRING((DT_WSTR, 434)cat_id, 1, 40)
(if I remember GUID length, maybe the last param should be 39 or something like this).
|||Michael Entin - MSFT wrote:
You may remove the braces by using SUBSTRING function in the DC expression:
http://msdn2.microsoft.com/en-us/library/ms137541.aspxSUBSTRING((DT_WSTR, 434)cat_id, 1, 40)
(if I remember GUID length, maybe the last param should be 39 or something like this).
Thanks, but why is that even necesssary? In Transact SQL, when a uniqueidentifier is cast to a varchar/nvarchar the result doesn't have braces around the value.
|||It is very common to add braces around GUID representation, although it is of course unfortunate that SSIS implemented it differently than T-SQL.|||Michael Entin - MSFT wrote:
It is very common to add braces around GUID representation, although it is of course unfortunate that SSIS implemented it differently than T-SQL.
Thanks for following up.
BTW, GUIDs are 36 characters and strings are 1-indexed, so the expression I'm using is:
SUBSTRING((DT_WSTR,434)cat_id,2,36)
No comments:
Post a Comment