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

nan*_*aka 4 sql oracle oracle11g

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

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

CCCXXXCCCCCCCCCCCCCCCCXXCCCCCCCCCCCCCCCCCCCCCCC
Run Code Online (Sandbox Code Playgroud)

我想'CX'作为唯一字符列表返回.

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

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

有没有办法在不使用存储过程的情况下执行此操作?

编辑:添加更多示例

zer*_*kms 9

SELECT SUBSTR(REGEXP_SUBSTR('CCCCXXXCCCCCCCCCCCCCCCCXXCCCCCCCCCCCCCCCCCCCCCCC', '^(.)\1*.'), -2, 2) RESULT
FROM DUAL;
Run Code Online (Sandbox Code Playgroud)

它回来了 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;
Run Code Online (Sandbox Code Playgroud)

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

  • 每个对第一个解决方案投赞成票的人是否都费心用不同的字符串来测试它?它惨遭失败。将 D 扔到中间,它仍然返回 CX。在开头加上 D,则返回 DC。如果可以的话,我会否决这一点。 (2认同)