首页 > 解决方案 > 在 DB2 中更新十六进制值

问题描述

我的表“XYZ”中有额外的字符。我正在将此表的数据与其他表进行比较。现在 XYZ 有一些额外的字符,我想更新其他表中的十六进制值。如何在 DB2 中为此编写更新语句?

例如:我有十六进制值的字符:4C6F6E646F6E,我正在尝试正则表达式将 6E 替换为 6F,如下所示:

SELECT REGEXP_REPLACE('LONDON', '\x6E','\x6F') FROM SYSIBM.SYSDUMMY1;

标签: sqldb2hexasciispecial-characters

解决方案


尝试以下任一等效表达式:

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              |

推荐阅读