分隔字串

2021-08-30 12:20:02 字數 1657 閱讀 7908

注:此sql原作者 袁老大

create or replace package split_pck is

type char_table is table of varchar2(4000);

function split_string(pi_str in varchar2, pi_separator in varchar2) return char_table;

procedure test_split_string(pi_string in varchar, pi_separator in varchar2);

end split_pck;

create or replace package body split_pck is

function split_string(pi_str in varchar2, pi_separator in varchar2) return char_table is

v_char_table char_table;

v_temp varchar2(4000);

v_element varchar2(4000);

begin

v_char_table := char_table(); --陣列初始化(必須)--

v_temp := pi_str;

while instr(v_temp, pi_separator) > 0

loop

v_element := substr(v_temp,1,instr(v_temp, pi_separator)-1);

v_temp := substr(v_temp, instr(v_temp,pi_separator)+ length(pi_separator) , length(v_temp));

v_char_table.extend;

v_char_table(v_char_table.count) := v_element;

end loop;

--以下兩句是為了把最後乙個分隔符身後的內容裝進陣列--

v_char_table.extend;--給陣列動態分配空間--

v_char_table(v_char_table.count) := v_temp; --(v_char_table.count)陣列的下標--

return v_char_table;

end split_string;

procedure test_split_string(pi_string in varchar, pi_separator in varchar2) is

v_char_table char_table;

begin

v_char_table := split_string(pi_string, pi_separator);

for i in 1 .. v_char_table.count

loop

dbms_output.put_line(v_char_table(i));

end loop;

end test_split_string;

end split_pck;

補充:建立型別的sql

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

字串分隔

題目 連續輸入字串,請按長度為8拆分每個字串後輸出到新的字串陣列 長度不是8整數倍的字串請在後面補數字0,空字串不處理。輸入 abc 123456789輸出 abc00000 12345678 90000000 include include using namespace std char str...

字串分隔

連續輸入字串,請按長度為8拆分每個字串後輸出到新的字串陣列 長度不是8整數倍的字串請在後面補數字0,空字串不處理。連續輸入字串 輸入2次,每個字串長度小於100 輸出到長度為8的新字串陣列。abc 123456789abc00000 12345678 90000000華為機試題。我的思路是先假設輸入...

字串分隔

連續輸入字串,請按長度為8拆分每個字串後輸出到新的字串陣列 長度不是8整數倍的字串請在後面補數字0,空字串不處理。連續輸入字串 輸入2次,每個字串長度小於100 輸出到長度為8的新字串陣列 輸入 abc 123456789 輸出 abc00000 12345678 90000000 對單個連續字串分...