如何在Oracle中用正则表达式从逗号分隔的列表中删除重复项,但我不希望重复值? [英] How to remove duplicates from comma separated list by regex in Oracle but I don't want duplicates values?

查看:117
本文介绍了如何在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中用正则表达式从逗号分隔的列表中删除重复项,但我不希望重复值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆