sql - 删除ORACLE 10g中重复的并发字符

标签 sql oracle replace oracle10g regexp-replace

我有一个聚合的 varchar2 列,其中包含在 Oracle 10g 中完成的扫描。一个例子是:

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, '(.)\1+','\1') new_str FROM DATA;

STR                                       NEW_STR
----------------------------------------- ----------------------------
XXXOABBOABBBBOABBBOABBBOABBBOABBBOOABUXXX XOABOABOABOABOABOABOABUX

SQL>

关于sql - 删除ORACLE 10g中重复的并发字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31586844/

相关文章:

php - 替换mysql查询中的字符不起作用

mysql - 如何更改输出以在短语中间包含计数

sql - 在 Oracle (PL/SQL) 中执行动态 SQL 并确保安全性

php - bind_param 错误,其中提供了正确数量的参数?

java - 插入新行,并通过简单计算增加最大值(并发问题)

sql - Oracle - 检查同一表中两列中的重复项

mysql - 在 MySQL 中替换字符串但仅指定部分

regex - freepascal 正则表达式替换

php - sql语句没有给出想要的结果

sql - 如何将示例数据库上传到 PostgreSQL