您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
这篇文章主要介绍了Oracle字符串拆分的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Oracle字符串拆分的方法是什么文章都会有所收获,下面我们一起来看看吧。
比如把一列 a,b,c 拆分为
a
b
c
SELECT regexp_substr('aaa,bbb,ccc', '[^,]+', 1, LEVEL) FROM dual CONNECT BY LEVEL <= LENGTH('aaa,bbb,ccc')-LENGTH(REPLACE('aaa,bbb,ccc', ','))+ 1;
输出结果:
SELECT regexp_substr('aaa;bbb;ccc', '[^;]+', 1, LEVEL) FROM dual CONNECT BY LEVEL <= LENGTH('aaa;bbb;ccc')-LENGTH(REPLACE('aaa;bbb;ccc', ';'))+ 1;
SELECT LEVEL FROM dual CONNECT BY LEVEL<10;
FIND_IN_SET(str,strlist)
CREATE OR REPLACE FUNCTION FIND_IN_SET(piv_str1 varchar2, piv_str2 varchar2, p_sep varchar2 := ',') RETURN NUMBER IS l_idx number:=0; str varchar2(500); piv_str varchar2(500) := piv_str2; res number:=0; loopIndex number:=0; BEGIN IF instr(piv_str, p_sep, 1) = 0 THEN IF piv_str = piv_str1 THEN res:= 1; END IF; ELSE LOOP l_idx := instr(piv_str,p_sep); loopIndex:=loopIndex+1; IF l_idx > 0 THEN str:= substr(piv_str,1,l_idx-1); IF str = piv_str1 THEN res:= loopIndex; EXIT; END IF; piv_str := substr(piv_str,l_idx+length(p_sep)); ELSE IF piv_str = piv_str1 THEN res:= loopIndex; END IF; EXIT; END IF; END LOOP; END IF; RETURN res; END FIND_IN_SET;
查看aaa是否在aaa,bbb,ccc中
SELECT find_in_set('aaa','aaa,bbb,ccc') FROM dual;
返回1
查看bbb是否在aaa,bbb,ccc中
SELECT find_in_set('bbb','aaa,bbb,ccc') FROM dual;
返回2
查看ddd是否在aaa,bbb,ccc中
SELECT find_in_set('ddd','aaa,bbb,ccc') FROM dual;
返回0
DROP FUNCTION FIND_IN_SET;
CREATE OR REPLACE PROCEDURE SPLIT_STR(STRLIST IN VARCHAR2) IS CURSOR CHECK_FLAG IS SELECT REGEXP_SUBSTR(STRLIST, '[^,]+', 1, LEVEL) F_VALUE FROM DUAL CONNECT BY LEVEL <= LENGTH(STRLIST) - LENGTH(REPLACE(STRLIST, ',')) + 1; BEGIN FOR REC IN CHECK_FLAG LOOP DBMS_OUTPUT.PUT_LINE(REC.F_VALUE); END LOOP; END SPLIT_STR;
DECLARE BEGIN SPLIT_STR('aaa,bbb,ccc'); END;
执行结果:
DROP PROCEDURE SPLIT_STR;
关于“Oracle字符串拆分的方法是什么”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Oracle字符串拆分的方法是什么”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。