小编典典

如何在Oracle中用正则表达式从逗号分隔的列表中删除重复项,但我不希望重复值?

sql

我有这串

ABCD1234, XYZ, ABCD1234, ABCD1234C, ABCD1234, abc, abcX, 1234U, 1234

我想要,但我不想 重复

ABCD1234, XYZ, ABCD1234C, abc, abcX, 1234U, 1234,

我在正则表达式下面使用

select regexp_replace (
    'ABCD1234, XYZ, ABCD1234, ABCD1234C, ABCD1234, abc, abcX, 1234U, 1234',
     '([^,]+)(,\1)+', '\1'
 ) test
from dual;

阅读 190

收藏
2021-05-05

共1个答案

小编典典

按照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

2021-05-05