首页 > 数据库

oracle 获得以特定字符分割的数组集合

时间:2009-05-15 06:05:34  作者:liyiyong1689  我要投稿
Linux初探欢迎您的投稿,投放方法请点击这里查看,我们会定期赠送精美小礼品给优秀的投稿作者。海纳百川 取则行远!LinuxGoo欢迎您的到来。
--1.首先定义一个数组类型: CREATE OR REPLACE TYPE "VARCHAR2VARRAY" IS VARRAY(8000) of VARCHAR2(4000) --2.然后定义一个函数:CREATE OR REPLACE FUNCTION sf......

--1.首先定义一个数组类型:

CREATE OR REPLACE TYPE "VARCHAR2VARRAY" IS VARRAY(8000) of VARCHAR2(4000)

--2.然后定义一个函数:

CREATE OR REPLACE FUNCTION sf_split_string(string VARCHAR2,
substring VARCHAR2)
RETURN Varchar2Varray IS
len integer := LENGTH(substring);
lastpos integer := 1 - len;
pos integer;
num integer;
i integer := 1;
ret Varchar2Varray := Varchar2Varray(4000);
BEGIN
LOOP
pos := instr(string, substring, lastpos len);
IF pos > 0 THEN
--found
num := pos - (lastpos len);
ELSE
--not found
num := LENGTH(string) 1 - (lastpos len);
END IF;

IF i > ret.LAST THEN
ret.EXTEND;
END IF;

ret(i) := SUBSTR(string, lastpos len, num);

EXIT WHEN pos = 0;
lastpos := pos;
i := i 1;
END LOOP;

RETURN ret;
END;

--测试:

declare
ret Varchar2Varray := Varchar2Varray(NULL);
i number;
begin
i := 1;
ret := sf_split_string('你、我、他', '、'); --获得分割数组
while i <= ret.count loop
dbms_output.put_line(ret(i));
i := i 1;
end loop;
end;

--具体例子:

create or replace function func_isexists(v_str1 varchar2,
v_str2 varchar2,
v_complete out varchar2,
v_nocomplete out varchar2)
return varchar2 is
--判断字符串2是否完全存在于字符串1

--例子:v_str1=abcdefg v_str2=a、b 则返回 1,因为 a 和 b 都存在于 v_str1
--例子: v_str1=abcdefg v_str2=a、h 则返回 0,因为 h 不存在于 v_str1
ret Varchar2Varray := Varchar2Varray(NULL);
i integer;
j integer;
v_returnvalue varchar2(1);

begin
v_returnvalue := 0;

if v_str1 = '' or v_str1 is NULL then
v_complete := '';
v_nocomplete := v_str2;
return '0';
end if;

if v_str2 = '' or v_str2 is NULL then
v_complete := '';
v_nocomplete := '';
return v_returnvalue;
end if;

如果您需转载 oracle 获得以特定字符分割的数组集合,请注明来自LinuxGoo.com,其版权归原作者所有。请广大网友留言时遵纪守法,使用文明用语。如果您在应用中有什么问题,请在下面留言,我们会尽快解答。
来顶一下
近回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
相关文章
栏目热门