表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 拆分逗号转行_一个列用逗号隔开,列转行,看看是否有更好的办法。相关推荐

  1. python逗号分隔符_在Python中用逗号将数字打印为数千个分隔符

    python逗号分隔符 什么是质数? (What is a prime number?) Many times, while writing the code we need to print the ...

  2. oracle逗号隔开行转列_oralce逗号分割变多行 Oracle中REGEXP_SUBSTR函数

    Oracle中REGEXP_SUBSTR函数 Oracle 中REGEXP_SUBSTR函数的使用说明: 题目如下:在 oracle 中,使用一条语句实现将'17,20,23'拆分成'17','20' ...

  3. oracle逗号隔开行转列_Oracle行转列函数

    Oracle行转列函数 1 需求 在实际开发中,行转列函数可以把列值以逗号分隔起来,并显示成一行.现要求利用一条sql语句获得表emp中所有员工姓名,且要求在前台页面中作为一个字符串出现,在这个字符串 ...

  4. sqlserver中将多列_如何在Excel中将一个长列变成多个列

    sqlserver中将多列 Too much data in a single column can make your Microsoft Excel spreadsheet harder to r ...

  5. linuxoracle查看用户权限_实现Oracle授予用户权限的一个实例

    本文将从用户创建讲起,特别讲述Oracle授予用户权限的一个实例,希望对大家了解Oracle授予用户权限有所帮助. 这两天在测数据库同步软件的时候,需要在Oracle里创建一个用户名和密码均为SYSD ...

  6. 将excel中的一个工作表按照某列拆分成多个sheet工作表

    如何将excel中的一个工作表按照某列拆分成多个sheet工作表呢?接下来就利用VBA工具来解决这个问题. 拆分之前的工作表: 拆分之后的工作表: 操作步骤具体如下: 第一步:打开需要拆分的表格文件: ...

  7. mysql 临时列_在MySQL中添加一个带有值的临时列?

    您可以借助以下语法添加具有值的临时列-select yourColumnName1,yourColumnName2,.....N ,yourTemporaryColumnValue as yourTe ...

  8. excel根据条件列转行_“Excel怎样将列转为行 Excel列转行方法“excel有条件转置

    EXCEL中如何将大量竖列数据一次性转为横行.如图. 很简单就可实现,用QQ说吧..87017761打字很麻烦.. Excel怎样将列转为行 Excel列转行方法 目标:将一列数转数据,比如将A列数据 ...

  9. mysql 交叉表行转列_Oracle行转列、列转行的Sql语句总结

    多行转字符串 这个比较简单,用||或concat函数可以实现 SQL Code selectconcat(id,username)strfromapp_user selectid||usernames ...

最新文章

  1. python实现卡方(Chi-Squared Test)相关性检验
  2. javascript常用验证大全
  3. 自主学习之RxSwift(二) -----flatMap
  4. OllyDbg完全教程
  5. Go 转义字符及风格
  6. 说一下 runnable 和 callable 有什么区别?
  7. codeforces gym-101736 Dessert First Strategy 最小割
  8. java 如何去掉http debug日志_你居然还去服务器上捞日志,搭个日志收集系统难道不香吗?...
  9. java中如何将JScrollPane的垂直滚动条自动移动到最下端
  10. Resi图片博客WordPress主题
  11. Handler基本概念
  12. spark aggregate函数详解
  13. 图片上传经过jwt_SpringSecurity整合Jwt过程图解
  14. 计算机毕业设计ssm+sqlserver房屋租赁管理系统
  15. 红帽子 linux 声卡驱动,RedHat Linux系统下安装ALSA驱动的方法
  16. 1999-2019,互联网失落者
  17. upc 卡德加的兔子 线段树 + 矩阵快速幂
  18. 老男孩Day9作业:高级FTP
  19. [APIO2014]连珠线 题解
  20. matlab 设置采样时间设置,不建议设置采样时间的模块

热门文章

  1. 基于不同STM32库函数的代码性能对比
  2. web.xml文件报红,怎么解决???
  3. 大剑无锋之Hive调优【面试推荐】
  4. leetcode 566. 重塑矩阵(Java版,坐标转换)
  5. 牛客网_PAT乙级_1026跟奥巴马一起编程(15)
  6. 牛客网_PAT乙级_1019. 数字黑洞 (20)
  7. mysql时间与字符串相互转换
  8. kotlin学习之嵌套类和内部类(六)
  9. 分布式事务——TCC 原理
  10. 理解JS的事件循环过程