• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >oracle > oracle 字符串转成行

oracle 字符串转成行

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了excel列转成行,列转成行,如何将列转成行,excel怎么把列转成行,如何把列转成行等相关知识,希望本文的分享对您有所帮助
SELECT   SUBSTR (T.RPT_ID,
                INSTR (T.RPT_ID,',',1,C.LV)+ 1,
                INSTR (T.RPT_ID,',',1,C.LV + 1)- (INSTR (T.RPT_ID,',',1,C.LV)+ 1))
            AS RPT_ID
  FROM   (SELECT ',' || '85,86,87' || ',' RPT_ID,
                 LENGTH ('85,86,87' || ',') - NVL (LENGTH (REPLACE ('85,86', ',')), 0) CNT
            FROM DUAL) t,
         (SELECT LEVEL lv
            FROM DUAL
          CONNECT BY LEVEL <= LENGTH('85,86,87' || ',') - NVL(LENGTH(REPLACE('85,86,87', ',')), 0)) c
 WHERE   T.cnt >= c.lv
说明:CNT表示串里面有多少字符。
当是字符串是表中的字段时,取level<=最大个数
如:
1).取最大个数
SELECT MAX(LENGTH(RPT_ID || ',') -
            NVL(LENGTH(REPLACE(RPT_ID, ',')), 0)) INTO v_c
    FROM DIM_AUDIT_TABLE@sjmh_inter;
2).l转成行
SELECT T.T_NAME,
                       T.T_NAME_COMM,
                       T.T_COLUMN,
                       T.T_COLUMN_COMM,
                       t.COMMENT_NL,
                       t.COMMENT_NL_TIME,
                       t.SEQ_USER_ID,
                       SUBSTR(T.RPT_ID,
                              INSTR(T.RPT_ID, '','', 1, C.LV) + 1,
                              INSTR(T.RPT_ID, '','', 1, C.LV + 1) -
                              (INSTR(T.RPT_ID, '','', 1, C.LV) + 1)) AS RPT_ID
                  FROM (SELECT A.T_NAME,
                               A.T_NAME_COMM,
                               A.T_COLUMN,
                               A.T_COLUMN_COMM,
                               a.COMMENT_NL,
                               a.COMMENT_NL_TIME,
                               a.SEQ_USER_ID,
                               '','' || A.RPT_ID || '','' RPT_ID,
                               LENGTH(A.RPT_ID || '','') -
                               NVL(LENGTH(REPLACE(A.RPT_ID, '','')), 0) CNT
                          FROM DIM_AUDIT_TABLE@sjmh_inter A
                         WHERE a.COMMENT_NL is not null) T,
                       (SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL <= '||v_c||') C
                 WHERE C.LV <= T.CNT;

注:如果是上面代码是远程的代码,(SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL <= '||v_c||') C,不要用dual表,可以改用all_objects或user_objects, 要不然能查询,但是把查询出来的SQL插入到某个表时,只能插入一行

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • oracle 字符串转成行

相关文章

  • 2017-05-11Oracle高级队列(Advanced Queue)简单实例
  • 2017-05-11Oracle中简单查询、限定查询、数据排序SQL语句范例和详细注解
  • 2017-05-11Oracle MERGE INTO的用法示例介绍
  • 2017-05-11oracle11g 通过修改配置文件方式连接远程数据库的方法
  • 2017-05-11ORACLE 毫秒与日期的相互转换示例
  • 2017-05-11在ORACLE移动数据库文件
  • 2017-05-11Oracle数据库中外键的相关操作整理
  • 2017-05-11Oracle数据创建虚拟列和复合触发器的方法
  • 2017-05-11Oracle Report中加入下载超链接操作方法
  • 2017-05-11oracle中去掉回车换行空格的方法详解

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • Oracle 创建监控账户 提高工作效率
    • 在oracle 数据库中查看一个sql语句的执行时间和SP2-0027错误
    • Oracle 12c新特性之如何检测有用的多列统计信息详解
    • ORACLE 最大连接数的问题
    • 在Tomcat服务器下使用连接池连接Oracle数据库
    • Oracle中CONCAT,SUBSTR,REPLACE的实例介绍
    • ORACLE LATERAL-SQL-INJECTION 个人见解
    • Oracle中 关于数据库存储过程和存储函数的使用
    • oracle表空单清理常用代码段整理
    • oracle数据库导出和oracle导入数据的二种方法(oracle导入导出数据)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有