Как преобразовать идентификатор идентификатора FileNet в DB2/Oracle в понятный GUID?

Техническая заметка IBM "Как преобразовать уникальный идентификатор, отображаемый в FileNet Enterprise Manager чтобы он совпадал с тем, что хранится в базах данных Oracle и DB2" описывает, как DB2 и Oracle хранят GUID в обратном порядке байтов. Как я могу преобразовать их в дружественного гида?


person Jeffrey Knight    schedule 15.11.2018    source источник


Ответы (2)


Предполагая, что object_id равен char(16) for bit data, следующее выражение возвращает то же самое.

'{'||translate(
  'GHEFCDAB-KLIJ-OPMN-QRST-UVWXYZ012345'
, hex(F.object_id)
, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ012345')||'}' as object_id
person Mark Barinstein    schedule 15.11.2018
comment
Я надеялся пометить это как принятый ответ, но это varchar (16) для битовых данных, поэтому это решение не работает. - person Jeffrey Knight; 19.11.2018
comment
Он также работает с varchar(16) для битовых данных. Попробуйте это: select '{'||translate( 'GHEFCDAB-KLIJ-OPMN-QRST-UVWXYZ012345' , hex(F.object_id) , 'ABCDEFGHIJKLMNOPQRSTUVWXYZ012345')||'}' as object_id , hex(F.object_id) as original_object_id from table( values cast(x'6640864000001eccb61ceaaa453b3870' as varchar(16) for bit data) , cast(x'66460680000015c39fc48c928e241e3b' as varchar(16) for bit data) ) F (object_id). Если у вас это не работает, то какая у вас платформа и версия db2? - person Mark Barinstein; 19.11.2018

Следующий код делает свое дело в DB2, следуя рецепту из 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

«Приведение как char(16)» — это ошибка — приведение к varchar(16) не работает, по крайней мере, в DB2.

Вот до и после:

руководители

person Jeffrey Knight    schedule 15.11.2018