【发布时间】:2017-01-11 04:43:50
【问题描述】:
我正在尝试使用 oracle REGEXP_REPLACE 函数来删除重复的字符。
字符串如下所示:
("ABC","DEF,,,,",,,"111",,,"HI")
输出应该是:
("ABC","DEF,,,,","111","HI")
为此,我尝试了以下代码
SELECT REGEXP_REPLACE(("ABC","DEF,,,,",,,"111",,,"HI")','[,]{2,}','(,))
FROM DUAL;
这是删除双引号内的逗号。有人可以告诉我如何删除不在双引号中的重复逗号吗?
【问题讨论】:
-
终极目标是什么?也许有更好的方法来获得最终结果。即这看起来您正在从有 NULL 列(连续逗号)的电子表格中获取数据。如果您最终通过 sqlldr 将其加载到表中,如果您只关心字段 1、2、5 和 8,则可以在控制文件中进行处理。
-
最终目标是删除输入字符串中双引号之外出现超过 2 次的重复逗号或某些特殊字符。这是我从 UI 中得到的。再说一个例子。输入字符串将为“AAAA123!!!!”、“BBB”、!!!!!、“CAAD”、!!!)。输出将是“AAAAA123!!!!”、“BBB”、!、“CADD”、!)。我想使用 regexp_replace 字符串来实现这一点。请让我知道这可能吗?提前致谢。
-
重复字符在哪里引入?用户界面还是用户?在 UI 下从数据库中提取数据的程序?清理后的数据如何处理?请分享大局,这可能有助于了解大局以提供更好的解决方案。
标签: regex oracle regexp-replace