How to find count and names of distinct characters in string in PL/SQL [duplicate]

半世苍凉 提交于 2019-12-05 16:02:09

You can use regular expression as follows:

SET serveroutput ON
DECLARE
     str        VARCHAR2(20):='helloexample';
     str_length NUMBER;
     c          VARCHAR2(20):=NULL;
     d          NUMBER;
BEGIN
     str_length:=LENGTH(str);
     FOR i IN 1..str_length
     LOOP
          IF regexp_instr(c,SUBSTR(str,i,1))>0 THEN
               NULL;
          ELSE
               c:=c||SUBSTR(str,i,1);
          END IF;
     END LOOP;
     dbms_output.put_line(c);
END;

the answer would be:

heloxamp

if WM_CONCAT isnt working for you, you can use this trick:

select rtrim(xmlagg(xmlelement(e, str)).extract('//text()'), ',') as output
  from (select substr(str, level, 1) str, level l,
               row_number() over (partition by substr(str, level, 1) 
                                      order by level) rn
          from (select 'helloexample' str  from dual) d
        connect by level <= length(str)
        order by level)
 where rn = 1;


SQL> select rtrim(xmlagg(xmlelement(e, str)).extract('//text()'), ',') as output
  2    from (select substr(str, rownum, 1) str, level l,
  3                 row_number() over (partition by substr(str, rownum, 1) order by level) rn
  4            from (select 'helloexample' str  from dual) d
  5          connect by level <= length(str)
  6          order by level)
  7   where rn = 1;

OUTPUT
--------------------------------------------------------------------------------
heloxamp
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!