前言致力做一个首先想的是怎么帮助别人的人
点赞再看,谢谢支持
想要提高编程效率,就必须学会造轮子,造好的轮子随时使用,随时开车。
今天分享一些实用的函数和存储过程(轮子),希望你能够用上。
一、(‘0a,0b,0c’)–>(‘0a’,‘0b’,‘0c’)create or replace function f_change_str_to_str(a_str in varchar2)
return varchar2 is
/*
--模块功能:字符串转换_例('0a,0b,0c')-->('0a','0b','0c')
--a_str: 传入字符串
--demo: select f_change_str_to_str('0a,0b,0c') from dual;
*/
oldstr varchar2(4000) := a_str;
newstr varchar2(4000) := null; --返回加单引号之后的值
v_commapos number(4); --逗号位置
v_curitem varchar2(4000) := ''; --当前添加项(不包含单引号)
begin
loop
exit when oldstr is null;
v_commapos := instr(oldstr, ','); --v_startpos
if (v_commapos = 0) then
--没有找到
v_curitem := oldstr;
oldstr := null; --停止查找
else
v_curitem := substr(oldstr, 1, v_commapos - 1);
--修改oldstr
oldstr := substr(oldstr,
v_commapos 1,
length(oldstr) - length(v_curitem) - 1);
end if;
if (newstr is null) then
newstr := '''' || v_curitem || '''';
else
newstr := newstr || ',''' || v_curitem || '''';
end if;
end loop;
return newstr;
end;
二、字符串转数组
CREATE OR REPLACE FUNCTION f_str_to_array (p_str IN VARCHAR2, p_delimiter IN VARCHAR2)
RETURN array_num
IS
j INT := 0;
i INT := 1;
len INT := 0;
len1 INT := 0;
str VARCHAR2 (4000);
str_split array_num := array_num();
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;
今天分享的对你有帮助吗,如果有,请点个赞,鼓励鼓励我吧,谢谢。
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved