ORACLE PL/SQL | Функция Split

Reading Time: 1 minute

ru_oracle-580x224_tcm29-102907

Всё очень просто.

1) Создаём тип данных:

create or replace type split_tbl as table of varchar2(32767);

2) Создаём функцию :

create or replace function split<br />
(<br />
 p_list varchar2,<br />
 p_del varchar2 := ','<br />
) return split_tbl pipelined<br />
is<br />
 l_idx pls_integer;<br />
 l_list varchar2(32767) := p_list;<br />
 l_value varchar2(32767);<br />
begin<br />
 loop<br />
  l_idx := instr(l_list,p_del);<br />
  if l_idx &amp;gt; 0 then<br />
   pipe row(substr(l_list,1,l_idx-1));<br />
   l_list := substr(l_list,l_idx+length(p_del));<br />
  else<br />
   pipe row(l_list);<br />
   exit;<br />
  end if;<br />
 end loop;<br />
 return;<br />
end split;

3) Тестируем:

select * from table (split('AAAAZBBBBZCCCCCZXXX','Z'))

4) Получаем:

<br />
COLUMN_VALUE<br />
AAAA<br />
BBBB<br />
CCCCC<br />
XXX<br />

Коротко, ясно и лаконично.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *