时间:2023-10-31来源:系统城装机大师作者:佚名
业务表A中一个字段存放用逗号分割的多个业务单元,现在需要将数据转成一个业务单元对应一个数据。
1 | SELECT * FROM app_template_dept t WHERE t.evaluate_index_code = '3330326' ; |
1 2 3 4 5 6 |
SELECT DISTINCT A.*, REGEXP_SUBSTR(A.DEPT_CODE, '[^,]+' , 1, Level , 'i' ) FROM ( SELECT * FROM APP_TEMPLATE_DEPT T WHERE T.EVALUATE_INDEX_CODE = '3330326' ) A CONNECT BY Level <= LENGTH(A.DEPT_CODE) - LENGTH(REGEXP_REPLACE(A.DEPT_CODE, ',' , '' )) + 1; |
对字符串进行正则分割,取特定字符的函数。
REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)
注意
:字符串最初的位置是1而不是0注意
:分割后最初的字符串会按分割的顺序排列成组注意
:针对的是正则表达式里字符大小写的匹配1 2 3 4 5 6 7 |
/*从第一个字符开始按照字符 'A' (区分大小写)分割字符串 '1a2A33a' ,取第二个分割出来的数据*/ SELECT REGEXP_SUBSTR( '1a2A33a' , '[^A]+' ,1,2, 'c' ) AS STR FROM DUAL; --结果:33a SELECT REGEXP_SUBSTR( '1a2A33a' , '[^A]+' ,1,2, 'i' ) AS STR FROM DUAL; --结果:2 /*把要输出来的第几个子串,通过一个变量ROWNUM转换成输出多少个子串。 level <=5代表的是输出5个,没有的为 null */ SELECT REGEXP_SUBSTR( '1a2A33a' , '[^A]+' ,1, Level , 'i' ) AS STR FROM DUAL CONNECT BY LEVEL <=5; --结果:1、2、33、null、null |
通过正则表达式来进行匹配替换。
REGEXP_REPLACE(VARCHAR str, VARCHAR pattern, VARCHAR replacement)
str:指定的字符串pattern:被替换的字符串replacement:用于替换的字符串 2)案例
1 | SELECT REGEXP_REPLACE( '1a2A33a' , 'A' , '' ) AS STR FROM DUAL; --结果:1a233a |
一般用来查找存在父子关系的数据,也就是树形结构的数据。
1 2 3 4 5 |
select ... from where ... --过滤条件,用于对返回的所有记录进行过滤。 [start with ...] --查询结果重起始根结点的限定条件。 connect by [ prior ] id=parentid --连接条件 ; |
也可以写成connect by id= [prior] parentid
,这种用法就表示从下往上查找数据,可以理解为从叶子节点往上查找父级几点,用第一层数据的parentid去跟表记录里面的id进行匹配,匹配成功那么查找出来的就是第二层数据;上面的那种就是从父级节点往下查找叶子节点。
1 | select rownum from dual connect by rownum<=10; |
结果
1 2 3 |
select * from table_temp start with id = '001001' connect by prior id = parent_id; |
table_temp表中数据
结果
返回字符串表达式中字符数的字符串函数。
LENGTH(string-expression)
1 | SELECT LENGTH( '1a2A33a' ) AS STR FROM DUAL; --结果:7 |
到此这篇关于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