У меня есть дополнительные символы в моей таблице «XYZ». Я сравниваю данные этой таблицы с другими таблицами. Теперь у XYZ есть несколько дополнительных символов, и я хочу обновить шестнадцатеричные значения в других таблицах. Как я могу написать заявление об обновлении для этого в DB2?

Например: у меня есть символ с шестнадцатеричным значением: 4C6F6E646F6E, я пытаюсь регулярное выражение заменить 6E на 6F следующим образом:

SELECT REGEXP_REPLACE('LONDON', '\x6E','\x6F') FROM SYSIBM.SYSDUMMY1;
-1
Rubecka 28 Дек 2019 в 14:52
2
Покажите нам, пожалуйста, свои запросы - что вы уже пробовали?
 – 
Zydnar
28 Дек 2019 в 14:58
2
Предоставьте образец данных для всех участвующих таблиц и желаемый результат.
 – 
Mark Barinstein
28 Дек 2019 в 15:14
Например: у меня есть символ с шестнадцатеричным значением: 4C6F6E646F6E, я пытаюсь заменить 6E на 6F с помощью регулярного выражения: SELECT REGEXP_REPLACE ('LONDON', '\ x6E', '\ x6F') FROM SYSIBM.SYSDUMMY1;
 – 
Rubecka
28 Дек 2019 в 15:57
Прочтите Как спросить, а затем отредактируйте свой вопрос. Не используйте комментарии для пояснения; комментарии могут отображаться или не отображаться в любом порядке. Код сложно читать в комментариях.
 – 
Robert
28 Дек 2019 в 20:14

1 ответ

Попробуйте любое из следующих эквивалентных выражений:

SELECT
  STR_ORIG
, STR_REPL
, HEX(STR_ORIG) HEX_ORIG
, HEX(STR_REPL) HEX_REPL
FROM
(
SELECT 
  T.STR STR_ORIG
--, REGEXP_REPLACE(T.STR, x'6E', x'6F')  STR_REPL
, REGEXP_REPLACE(T.STR, '\x6E', x'6F')  STR_REPL
FROM (VALUES 'London') T (STR)
);

|STR_ORIG|STR_REPL     |HEX_ORIG    |HEX_REPL                  |
|--------|-------------|------------|--------------------------|
|London  |Loodoo       |4C6F6E646F6E|4C6F6F646F6F              |
0
Mark Barinstein 28 Дек 2019 в 18:04