1、定義乙個自定義型別
create or replace type ty_str_split is table of varchar2 (4000);
2、定義乙個函式
複製**
create or replace function fn_split (p_str in varchar2, p_delimiter in varchar2)
return ty_str_split pipelined
is j int := 0;
i int := 1;
len int := 0;
len1 int := 0;
str varchar2 (4000);
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);
pipe row (str);
if i >= len
then
exit;
end if;
else
str := substr (p_str, i, j - i);
i := j + len1;
pipe row (str);
end if;
end loop;
return;
end fn_split;
複製**
3、字串陣列的應用
複製**
/* description:車機聯控下發到責任單位
*/ procedure cjlk_unit_down(
p_errcd in out number,
p_errmsg in out varchar2,
p_cjlk_xh in varchar2,
p_jsdwbh in varchar2,
p_jsdwmc in varchar2,
p_zt in varchar default 『a』
)as
cursor l_jsdwbh is select * from table (cast (fn_split(p_jsdwbh,』;』) as ty_str_split));
begin
p_errcd:=0;
p_errmsg:=」;
update aqgl.cjlk set jsdwbh=p_jsdwbh,jsdwmc=p_jsdwmc,zt=』b』 where xh=p_cjlk_xh;
for i in l_jsdwbh loop
insert into aqgl.cjlk_dwfk (xh,pid,jsdwbh,jsdwmc,zt)
values (sys_guid(),p_cjlk_xh,i.column_value,get_dwmc(i.column_value),p_zt);
end loop;
commit;
exception
when others then
rollback;
p_errcd:=sqlcode;
p_errmsg:=sqlerrm;
end;
複製**
其中p_jsdwbh包含了多個用;分隔的字串。
分解字串
按要求分解字串,輸入兩個數m,n m代表輸入的m串字串,n代表輸出的每串字串的位數,不夠補0。例如 輸入2,8,abc 123456789 則輸出為 abc00000 12345678 90000000 分析思路 1.獲得字串的長度length後,判斷與 要輸出位數n 的大小,大於n的話,直接 pr...
字串 Lyndon分解
lyndon串 當且僅當字串 s 的字典序嚴格小於其所有字尾的字典序時,字串 s 是lyndon串。當且僅當字串 s 的字典序嚴格小於其所有非平凡迴圈同構串的字典序時,字串 s 是lyndon串。lyndon分解 字串 s 的lyndon分解為 s w 1 w 2 cdots w n 其中所有的 w...
sqlserver 分割字串為陣列
返回字串按照指定分隔符分割後的陣列的長度 create function get strarraylength str varchar 1024 要分割的字串 split varchar 10 分隔符號 returns int as begin declare location int declar...