这篇文章主要介绍了oracle字符串拆分的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Oracle字符串拆分的方法是什么文章都会有所收获,下面我们一起来看看吧。Oracle字符串拆分比如把一列 a,
这篇文章主要介绍了oracle字符串拆分的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Oracle字符串拆分的方法是什么文章都会有所收获,下面我们一起来看看吧。
比如把一列 a,b,c 拆分为
a
b
c
SELECTregexp_substr('aaa,bbb,ccc', '[^,]+', 1, LEVEL)FROMdualCONNECT BYLEVEL <= LENGTH('aaa,bbb,ccc')-LENGTH(REPLACE('aaa,bbb,ccc', ','))+ 1;
输出结果:
SELECTregexp_substr('aaa;bbb;ccc', '[^;]+', 1, LEVEL)FROMdualCONNECT BYLEVEL <= 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;BEGINIF instr(piv_str, p_sep, 1) = 0 THEN IF piv_str = piv_str1 THEN res:= 1; END IF;ELSELOOPl_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;
DECLAREBEGIN SPLIT_STR('aaa,bbb,ccc');END;
执行结果:
DROP PROCEDURE SPLIT_STR;
关于“Oracle字符串拆分的方法是什么”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Oracle字符串拆分的方法是什么”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。
--结束END--
本文标题: Oracle字符串拆分的方法是什么
本文链接: https://www.lsjlt.com/news/355273.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-13
2024-05-13
2024-05-13
2024-05-13
2024-05-13
2024-05-13
2024-05-13
2024-05-13
2024-05-13
2024-05-13
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0