Преобразовать значение HEX в CHAR в DB2 - PullRequest
2 голосов
/ 27 октября 2011

В связи с репликацией данных от SQL Server до DB2 У меня следующий вопрос:

Вкл. DB2 У меня есть таблица, содержащая (для простоты) два столбца: COL1 и COL2.

COL1 определяется как CHAR(20).COL2 определяется как CHAR(10).

COL1 реплицируется из SQL путем преобразования строки в шестнадцатеричный код, например, "abcdefghij" в "6162636465666768696A" или "1111111111" в "31313131313131313131" с использованием следующегоЗапрос SQL:

CONVERT(char(20), cast(@InputString as binary) 2)

, где @InputString будет "abedefghij".

Другими словами, COL1 содержит шестнадцатеричное значение, но в виде строки (извините, если формулировка неверна).

Мне нужно преобразовать шестнадцатеричное значение обратно в строку и поместить это значение в COL2.

Каким должен быть запрос SQL на DB2, чтобы выполнить преобразование?Я знаю, как это сделать на SQL Server, но не на DB2.

Примечание. Причина, по которой шестнадцатеричное значение предварительно не фиксируется с "0x", заключается в том, что стиль 2 используется в CONVERT выписка.

Ответы [ 3 ]

5 голосов
/ 27 октября 2011
select hex('A') from sysibm.sysdummy1; 

возвращает 41. а

select x'41' from sysibm.sysdummy1;

дает вам «A».Таким образом, вы можете поместить это в for цикл и цикл по каждой паре шестнадцатеричных символов, чтобы получить исходную строку.Или вы можете написать свою собственную функцию unhex.

Взято из http://www.dbforums.com/db2/1627076-display-hex-columns.html

4 голосов
/ 29 апреля 2015

DB2 имеет встроенную кодировку / декодирование.

Для вопросов ОП, используйте ....

select CAST(ColumnName as char(20) CCSID 37) as ColumnName from TableName where SomeConditionExists

http://www -01.ibm.com / поддержка / knowledgecenter / SSEPEK_10.0.0 / com.ibm.db2z10.doc.intro / SRC / TPC / db2z_introcodepage.dita

0 голосов
/ 21 февраля 2017

Это одна из наиболее близких тем к теме моей проблемы:

Я потерял 2 дня, чтобы выяснить, как перенести файлы XML, хранящиеся в поле BLOB DB2, с помощью SQL Developer.(Да, миграция и выполнение запросов из SQL Developer - мы переносим данные в Oracle из DB2, поэтому мы использовали этот инструмент)!

Как отобразить XML-файл / строку, хранящиеся в BLOB?

Давайте начнем с того, в чем заключалась проблема:

  1. Данные в BLOBбыл файл XML.
  2. При выборе в запросе получил:

    enter image description here

  3. При приведении, например:

select CAST(BLOBCOLUMN as VARCHAR(1000)) from TABLE where id = 100;

вывод был в шестнадцатеричном формате:

enter image description here

  1. Ничего не получалось ... Даже решение по ссылкам в этой теме.! НИЧЕГО!

По ошибке найдено решение:

  1. СОЗДАТЬ ФУНКЦИЮ в DB2:

    CREATE FUNCTION unhex(in VARCHAR(32000) FOR BIT DATA) RETURNS VARCHAR(32000) LANGUAGE SQL CONTAINS SQL DETERMINISTIC NO EXTERNAL ACTION BEGIN ATOMIC RETURN in; END

  2. Выполнить SELECT:

    select UNHEX( CAST(BLOBCOLUMN as VARCHAR(32000) FOR BIT DATA)) from TABLE where id = 100;

  3. Результат:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...