如何从Oracle中的字符串中获取唯一字符?

时间:2011-08-29 05:09:42

标签: sql oracle oracle11g

如何从Oracle中的字符串中获取唯一字符?

假设我有一个包含数据的列

CCCXXXCCCCCCCCCCCCCCCCXXCCCCCCCCCCCCCCCCCCCCCCC

我希望将'CX'作为唯一字符列表返回。

同样:aaaabbbccccdddaaa ==> abcd,HelloO ==> HeloO

顺序很重要,我希望它们与首次出现在字符串中的顺序相同。

有没有办法不使用存储过程呢?

编辑:添加更多示例

1 个答案:

答案 0 :(得分:9)

SELECT SUBSTR(REGEXP_SUBSTR('CCCCXXXCCCCCCCCCCCCCCCCXXCCCCCCCCCCCCCCCCCCCCCCC', '^(.)\1*.'), -2, 2) RESULT
FROM DUAL;

返回CX

这是另一种解决方案:

Select Replace (Wm_Concat (C), ',', '')
From
  (Select Substr ('CCCXCCCXXXCCCCCCCCCCCCCCCCXXCCCCCCCCCCCCCCCC', Rownum, 1) C,
    Min (Rownum) Rn
  From Dual
    Connect By Rownum <= Length ( 'CCCXCCCXXXCCCCCCCCCCCCCCCCXXCCCCCCCCCCCCCCCC')
  Group By Substr ( 'CCCXCCCXXXCCCCCCCCCCCCCCCCXXCCCCCCCCCCCCCCCC', Rownum, 1)
  Order By Rn
  ) X;

它按照它们出现的顺序返回所有唯一的字符。顺便说一句,是的,它看起来很糟糕