Search code examples
sqloracle-databasedb2guidfilenet-content-engine

How can I translate the FileNet ID ID in DB2/Oracle into friendly GUID?


The IBM Technote "How to translate the unique identifier as displayed within FileNet Enterprise Manager so that it matches what is stored in the Oracle and DB2 databases" outlines how DB2 & Oracle store guids in a byte reversed order. How can I convert them into a friendly guid?


Solution

  • The following code does the trick in DB2, following the recipe from the IBM Technote:

    ‘{’ concat  upper(VARCHAR_FORMAT_BIT(
     cast(substring(F.Object_id, 4, 1) concat
     substring(F.Object_id, 3, 1) concat
     substring(F.Object_id, 2, 1)  concat
     substring(F.Object_id, 1, 1)  concat
     substring(F.Object_id, 6, 1)  concat
     substring(F.Object_id, 5, 1)  concat
     substring(F.Object_id, 8, 1)  concat
     substring(F.Object_id, 7, 1)  concat
     substring(F.Object_id, 9) as char(16)), ‘xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx’)) concat ‘}’ as object_id
    

    The "cast as char(16)" is a gotcha - casting to varchar(16) does not work on DB2 at least.

    Here's the before and after:

    guids