时间:2023-10-31来源:系统城装机大师作者:佚名
比如把一列 a,b,c 拆分为
a
b
c
1 2 3 4 5 6 |
SELECT regexp_substr( 'aaa,bbb,ccc' , '[^,]+' , 1, LEVEL ) FROM dual CONNECT BY LEVEL <= LENGTH( 'aaa,bbb,ccc' )-LENGTH( REPLACE ( 'aaa,bbb,ccc' , ',' ))+ 1; |
输出结果:
1 2 3 4 5 6 |
SELECT regexp_substr( 'aaa;bbb;ccc' , '[^;]+' , 1, LEVEL ) FROM dual CONNECT BY LEVEL <= LENGTH( 'aaa;bbb;ccc' )-LENGTH( REPLACE ( 'aaa;bbb;ccc' , ';' ))+ 1; |
1 | SELECT LEVEL FROM dual CONNECT BY LEVEL <10; |
FIND_IN_SET(str,strlist)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
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中
1 | SELECT find_in_set( 'aaa' , 'aaa,bbb,ccc' ) FROM dual; |
返回1
查看bbb是否在aaa,bbb,ccc中
1 | SELECT find_in_set( 'bbb' , 'aaa,bbb,ccc' ) FROM dual; |
返回2
查看ddd是否在aaa,bbb,ccc中
1 | SELECT find_in_set( 'ddd' , 'aaa,bbb,ccc' ) FROM dual; |
返回0
1 | DROP FUNCTION FIND_IN_SET; |
1 2 3 4 5 6 7 8 9 10 11 12 |
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; |
1 2 3 4 |
DECLARE BEGIN SPLIT_STR( 'aaa,bbb,ccc' ); END ; |
执行结果:
1 | DROP PROCEDURE SPLIT_STR; |
到此这篇关于Oracle字符串拆分的文章就介绍到这了
2023-10-31
Oracle如何编写一个sqlldr实例2023-10-31
Oracle的SQLLDR用法简介2023-10-31
Oracle中的高效SQL编写PARALLEL解析1.Oracle数据库系统结构概述 2.Oracle数据库存储结构 物理存储结构 控制文件 数据文件 重做日志文件 归档日志文件 Oracle数据库逻辑结构 数据块(Data Block) (盘)区(Extent) 段(Segment) 表空间(Tablespace) 本地管...
2023-10-31
windows下的Oracle19c 一、官网下载Oracle19c数据库 二、安装Oracle数据库 1.解压安装包 2.运行setup.exe安装 三、配置 四、安装完Oracle数据库,给scott用户解锁 1.解决Oracle数据库中没有scott账户的问题 2.给scott...
2023-10-31