本文介绍了如何在Oracle中用正则表达式从逗号分隔的列表中删除重复项,但我不希望重复值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有这个字符串
ABCD1234, XYZ, ABCD1234, ABCD1234C, ABCD1234, abc, abcX, 1234U, 1234
我想要,但我不想重复值
ABCD1234, XYZ, ABCD1234C, abc, abcX, 1234U, 1234,
我正在使用下面的正则表达式
I'm using below regex
select regexp_replace (
'ABCD1234, XYZ, ABCD1234, ABCD1234C, ABCD1234, abc, abcX, 1234U, 1234',
'([^,]+)(,\1)+', '\1'
) test
from dual;
推荐答案
按照文章 http://www.dba-oracle.com/t_extract_comma_delimited_strings_oracle_sql.html :
select distinct str from
(select regexp_substr ('ABCD1234, XYZ, ABCD1234, ABCD1234C, ABCD1234, abc, abcX, 1234U, 1234', '[^, ]+',1, rownum) str
from dual
connect by level <= regexp_count ('ABCD1234, XYZ, ABCD1234, ABCD1234C, ABCD1234, abc, abcX, 1234U, 1234', '[^, ]+')) v;
提琴: http://sqlfiddle.com/#!4/c858d/5
这篇关于如何在Oracle中用正则表达式从逗号分隔的列表中删除重复项,但我不希望重复值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!