如何从Oracle中的字符串中获取唯一字符?
假设我有一个包含数据的列
CCCXXXCCCCCCCCCCCCCCCCXXCCCCCCCCCCCCCCCCCCCCCCC
我希望将'CX'
作为唯一字符列表返回。
同样:aaaabbbccccdddaaa ==> abcd,HelloO ==> HeloO
顺序很重要,我希望它们与首次出现在字符串中的顺序相同。
有没有办法不使用存储过程呢?
编辑:添加更多示例
答案 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;
它按照它们出现的顺序返回所有唯一的字符。顺便说一句,是的,它看起来很糟糕