字串分割及陣列概念

2021-06-22 18:41:54 字數 2366 閱讀 6774

--在包pkg_stm_char的包頭中定義

type table_para is table of varchar2(1000) index by binary_integer;

--在包pkg_stm_char的包頭中定義fn_split分割函式

function fn_split(p_str varchar2, p_splitchar varchar2 := ',', p_flag pls_integer := 1) return table_para;

--在包pkg_stm_char的包體中定義函式邏輯

--拆分字串,相當於split函式的功能

--引數: p_str,要拆分的字串

-- p_splitchar,字串的分隔符

-- p_flag,(=1,預設將字串未尾的字串的分隔符去除掉)

function fn_split(p_str varchar2,

p_splitchar varchar2 := ',',

p_flag pls_integer := 1) return table_para is

t_para table_para;

l_str varchar2(4000) := p_str;

l_len number := length(l_str);

l_splitchar varchar2(1) := p_splitchar;

l_splitstr varchar2(100);

l_b number := 1;

l_e number := 1;

l_x number := 0;

begin

if p_flag = 1 then

if substr(l_str, l_len, 1) = l_splitchar then

l_str := rtrim(l_str, l_splitchar);

end if;

end if;

while l_e != 0 loop

l_e := instr(l_str, l_splitchar, l_b);

l_splitstr := substr(l_str, l_b, l_e - l_b);

if l_e = 0 then

l_splitstr := substr(l_str, l_b, l_len);

end if;

l_b := l_e + 1;

t_para(l_x) := l_splitstr;

l_x := l_x + 1;

end loop;

return t_para;

end;

使用例項一:(輸出陣列的序號及陣列對應的內容)

declare

l_table pkg_stm_char.table_para;

begin

l_table := pkg_stm_char.fn_split('aaaaa,bbbb,cccc,dddd,', ',', 1);

for cnt in l_table.first .. l_table.last loop

--dbms_output.put_line(cnt);---輸出對應的數字

--dbms_output.put_line(l_table(cnt));---輸出對應的內容

dbms_output.put_line(cnt||','||l_table(cnt));

end loop;

end;

輸出結果:

0,aaaaa

1,bbbb

2,cccc

3,dddd

使用例項二:(輸出整個陣列中的內容)

declare

l_table pkg_stm_char.table_para;

begin

l_table := pkg_stm_char.fn_split('1,aaaaa$2,bbbb$3,cccc$4,dddd$', '$', 1);

dbms_output.put_line(l_table(0));

dbms_output.put_line(l_table(1));

dbms_output.put_line(l_table(2));

dbms_output.put_line(l_table(3));

end;

輸出結果:

1,aaaaa

2,bbbb

3,cccc

4,dddd

sql 字串轉陣列 sql 字串分割陣列

update tempcolor set color 1 dbo.func strarraystrofindex color,1 alter function dbo func strarraystrofindex str varchar 1024 要分割的字串 split varchar 10 分...

split 將字串分割成字串陣列

list name list name.split split 方法用於把乙個字串分割成字串陣列。stringobject.split separator,howmany 引數 描述separator 必需。字串或正規表示式,從該引數指定的地方分割 stringobject。howmany 可選。該...

mysql分割字串 mysql分割字串

專案有通過一批id去過濾結果的需求,因為這個id是從其他平台拉下來的excel,為了避免加引號逗號的麻煩,在mysql儲存過程裡面拼接。在此做個記錄。很多地方用得上。1.通過某個字元,分割字串的函式。輸入分別為f string 待分割字串 f delimiter 分割字元 f order 取的字串的...