Regexp_replace:删除' +'中的复制品在Oracle中稀释字符串

时间:2017-10-30 13:30:35

标签: sql regex oracle

我在表格列中有一个字符串,用' +'分隔。我需要删除重复项。

插图:

我的数据:

a+a+a+b+b+c+c

期望:

a+b+c

我尝试使用REGEXP_REPLACE但无法转义保留的+字符。

我使用comma分隔值成功,但需要+?分隔值的帮助。

具有comma分隔值的工作代码:

SELECT REGEXP_REPLACE ('a,a,a,b,b,c,c', '([^,]+)(,\1)+', '\1') FROM DUAL;

2 个答案:

答案 0 :(得分:1)

如果您需要使用保留字符作为其正常值,则需要使用反斜杠将其转义。这适用于所有保留字符。

\

您可以通过将正则表达式中的每个逗号替换为...

来修改现有代码
\+

例如:

SELECT REGEXP_REPLACE('a+a+a+b+b+c+c', '([^\+]+)(\+\1)+', '\1') FROM DUAL;

答案 1 :(得分:0)

逃避+:

 SELECT REGEXP_REPLACE ('a+a+a+b+b+c+c', '([^\+]+)(\+\1)+', '\1') FROM DUAL;