Oracle 實現 split 函式 返回陣列)

2021-04-13 08:52:14 字數 1388 閱讀 4326

功能描述:用指定分隔符切割輸入的字串,返回一維陣列,每個陣列元素為乙個子串。

源**:

create or replace type ty_str_split is table of varchar2 (4000);

create or replace function fn_split (p_str in varchar2, p_delimiter in varchar2)

return ty_str_split is

j int := 0;

i int := 1;

len int := 0;

len1 int := 0;

str varchar2 (4000);

str_split ty_str_split := ty_str_split ();

begin

len := length (p_str);

len1 := length (p_delimiter);

while j < len

loop

j := instr (p_str, p_delimiter, i);

if j = 0

then

j := len;

str := substr (p_str, i);

str_split.extend;

str_split (str_split.count) := str;

if i >= len

then

exit;

end if;

else

str := substr (p_str, i, j - i);

i := j + len1;

str_split.extend;

str_split (str_split.count) := str;

end if;

end loop;

return str_split;

end fn_split; /

測試:declare

cursor c is

select *

from table (cast (fn_split ('1;;12;;123;;1234;;12345', ';;') as ty_str_split )

);r c%rowtype;

begin

open c;

loop

fetch c into r;

exit when c%notfound;

dbms_output.put_line (r.column_value);

end loop;

close c;

end; /

結果: 1

12123

1234

12345

oracle實現split函式

oracle資料庫中某乙個字段可能存在以某些特殊符號隔開的字段,我們在查詢使用的時候往往需要將這些欄位spilt開 但是oracle沒有這個函式,網上搜尋了一下,找了乙個可以使用的函式 下面直接上指令碼 1.先建立乙個type create or replace type obj target as...

split 函式實現

split函式實現 ss axx bv ctt dff result def split 1 ss,a,times len ss i 0n 0 while len ss 0 and iand nif ss i i len a a print i i print 之前的ss ss print resu...

c 實現split函式

今天工作因原因,需要實現乙個split的功能,以前也做過,但一直沒有把他記下來,所以又重新寫了一次。這次做個筆記以備後用,各位感興趣也可以直接拿來用過。例子 乙個這樣的字串 123,456,789,0 把他擷取成這樣的字串陣列 123 456 789 0 眾所周知c 預設沒有提供這樣功能的函式,下面...