oracle 拆分逗号转行_一个列用逗号隔开,列转行,看看是否有更好的办法。
表mytest1, 表结构,初始数据如下:
SQL> desc mytest1;
Name Type Nullable Default Comments
----------- -------------- -------- ------- --------
DEPART_ID VARCHAR2(10) Y
OBJECT_NAME VARCHAR2(4000) Y复制代码
SQL> select * from mytest1;
DEPART_ID OBJECT_NAME
---------- --------------------------------------------------------------------------------
helpdesk FILE$,I_FILE1,I_IND1,I_PROXY_ROLE_DATA$_1
human CON$,ICOL$,I_OBJ3
manager C_COBJ#,I_CDEF2,I_OBJ#
spy I_CDEF4,I_FILE#_BLOCK#,I_OBJ5,I_TS#,UET$
tech I_CON1,I_USER1,PROXY_ROLE_DATA$,UNDO$
由于列object_name全部为逗号分隔,希望转化为:
DEPART_ID SUBSTR(OBJECT_NAME,DECODE(LEVE LEVEL
---------- -------------------------------------------------------------------------------- ----------
helpdesk FILE$ 1
helpdesk I_FILE1 2
helpdesk I_IND1 3
helpdesk I_PROXY_ROLE_DATA$_1 4
human CON$ 1
human ICOL$ 2
human I_OBJ3 3
manager C_COBJ# 1
manager I_CDEF2 2
manager I_OBJ# 3
spy I_CDEF4 1
spy I_FILE#_BLOCK# 2
spy I_OBJ5 3
spy I_TS# 4
spy UET$ 5
tech I_CON1 1
tech I_USER1 2
tech PROXY_ROLE_DATA$ 3
tech UNDO$ 4
目前我采用的SQL如下:
SELECT distinct depart_id,
substr(object_name,
DECODE(LEVEL,
1,
1,
regexp_count(object_name, ',') + 1,
INSTR(object_name,
',',
1,
regexp_count(object_name, ',')) + 1,
INSTR(object_name, ',', 1, LEVEL - 1) + 1),
DECODE(LEVEL,
regexp_count(object_name, ',') + 1,
INSTR(REVERSE(object_name), ',', 1) - 1,
INSTR(object_name, ',', 1, LEVEL) -
DECODE(LEVEL,
1,
1,
INSTR(object_name, ',', 1, LEVEL - 1) + 1))),
LEVEL
from mytest1
CONNECT BY LEVEL <= regexp_count(object_name, ',') + 1
order by depart_id, level;
由于CONNECT BY 这个地方没有什么限制,所以垃圾数据太多,通过distinct过滤之后数据是没问题,应该还有更简单的SQL。 谁能try 一下。
oracle 拆分逗号转行_一个列用逗号隔开,列转行,看看是否有更好的办法。相关推荐
- python逗号分隔符_在Python中用逗号将数字打印为数千个分隔符
python逗号分隔符 什么是质数? (What is a prime number?) Many times, while writing the code we need to print the ...
- oracle逗号隔开行转列_oralce逗号分割变多行 Oracle中REGEXP_SUBSTR函数
Oracle中REGEXP_SUBSTR函数 Oracle 中REGEXP_SUBSTR函数的使用说明: 题目如下:在 oracle 中,使用一条语句实现将'17,20,23'拆分成'17','20' ...
- oracle逗号隔开行转列_Oracle行转列函数
Oracle行转列函数 1 需求 在实际开发中,行转列函数可以把列值以逗号分隔起来,并显示成一行.现要求利用一条sql语句获得表emp中所有员工姓名,且要求在前台页面中作为一个字符串出现,在这个字符串 ...
- sqlserver中将多列_如何在Excel中将一个长列变成多个列
sqlserver中将多列 Too much data in a single column can make your Microsoft Excel spreadsheet harder to r ...
- linuxoracle查看用户权限_实现Oracle授予用户权限的一个实例
本文将从用户创建讲起,特别讲述Oracle授予用户权限的一个实例,希望对大家了解Oracle授予用户权限有所帮助. 这两天在测数据库同步软件的时候,需要在Oracle里创建一个用户名和密码均为SYSD ...
- 将excel中的一个工作表按照某列拆分成多个sheet工作表
如何将excel中的一个工作表按照某列拆分成多个sheet工作表呢?接下来就利用VBA工具来解决这个问题. 拆分之前的工作表: 拆分之后的工作表: 操作步骤具体如下: 第一步:打开需要拆分的表格文件: ...
- mysql 临时列_在MySQL中添加一个带有值的临时列?
您可以借助以下语法添加具有值的临时列-select yourColumnName1,yourColumnName2,.....N ,yourTemporaryColumnValue as yourTe ...
- excel根据条件列转行_“Excel怎样将列转为行 Excel列转行方法“excel有条件转置
EXCEL中如何将大量竖列数据一次性转为横行.如图. 很简单就可实现,用QQ说吧..87017761打字很麻烦.. Excel怎样将列转为行 Excel列转行方法 目标:将一列数转数据,比如将A列数据 ...
- mysql 交叉表行转列_Oracle行转列、列转行的Sql语句总结
多行转字符串 这个比较简单,用||或concat函数可以实现 SQL Code selectconcat(id,username)strfromapp_user selectid||usernames ...
最新文章
- python实现卡方(Chi-Squared Test)相关性检验
- javascript常用验证大全
- 自主学习之RxSwift(二) -----flatMap
- OllyDbg完全教程
- Go 转义字符及风格
- 说一下 runnable 和 callable 有什么区别?
- codeforces gym-101736 Dessert First Strategy 最小割
- java 如何去掉http debug日志_你居然还去服务器上捞日志,搭个日志收集系统难道不香吗?...
- java中如何将JScrollPane的垂直滚动条自动移动到最下端
- Resi图片博客WordPress主题
- Handler基本概念
- spark aggregate函数详解
- 图片上传经过jwt_SpringSecurity整合Jwt过程图解
- 计算机毕业设计ssm+sqlserver房屋租赁管理系统
- 红帽子 linux 声卡驱动,RedHat Linux系统下安装ALSA驱动的方法
- 1999-2019,互联网失落者
- upc 卡德加的兔子 线段树 + 矩阵快速幂
- 老男孩Day9作业:高级FTP
- [APIO2014]连珠线 题解
- matlab 设置采样时间设置,不建议设置采样时间的模块