ORACLE 10g去除重复并发字符
Remove repeated concurrent characters in ORACLE 10g
我在 Oracle 10g 中有一个聚合的 varchar2 列,其中包含已完成的扫描。一个例子是:
My_Column
XXXOABBOABBBBOABBBOABBBOABBBOABBBOOABUXXX
我需要删除重复的并发字符,即。我需要将上面的字符串转换为:
My_Column
XOABOABOABOABOABOABOABUX
我需要保留每个字符的相对顺序
我该怎么做?
我正在考虑使用嵌套的 REPLACE() 函数来清理字符串,但我正在寻找更简单的替代方法
您可以使用 REGEXP_REPLACE。
例如,
SQL> WITH DATA(str) AS(
2 SELECT 'XXXOABBOABBBBOABBBOABBBOABBBOABBBOOABUXXX' FROM dual
3 )
4 SELECT str, regexp_replace(str, '(.)+','') new_str FROM DATA;
STR NEW_STR
----------------------------------------- ----------------------------
XXXOABBOABBBBOABBBOABBBOABBBOABBBOOABUXXX XOABOABOABOABOABOABOABUX
SQL>
我在 Oracle 10g 中有一个聚合的 varchar2 列,其中包含已完成的扫描。一个例子是:
My_Column
XXXOABBOABBBBOABBBOABBBOABBBOABBBOOABUXXX
我需要删除重复的并发字符,即。我需要将上面的字符串转换为:
My_Column
XOABOABOABOABOABOABOABUX
我需要保留每个字符的相对顺序 我该怎么做?
我正在考虑使用嵌套的 REPLACE() 函数来清理字符串,但我正在寻找更简单的替代方法
您可以使用 REGEXP_REPLACE。
例如,
SQL> WITH DATA(str) AS(
2 SELECT 'XXXOABBOABBBBOABBBOABBBOABBBOABBBOOABUXXX' FROM dual
3 )
4 SELECT str, regexp_replace(str, '(.)+','') new_str FROM DATA;
STR NEW_STR
----------------------------------------- ----------------------------
XXXOABBOABBBBOABBBOABBBOABBBOABBBOOABUXXX XOABOABOABOABOABOABOABUX
SQL>