Oracle逗号分隔列转行实现方法

时间:2024-01-14 20:04:37 

那么,现在如果给出一个权限编号,要去检索出用后这个权限的用户集合,就会需要在逗号分隔的多个权限编号中去匹配给出的这个权限编号。如果使用like去做,一则效率不高,二则匹配不精确。因此用到了逗号分隔列转行的方法。目前该方法只适合在oracle数据库中使用。该方法只需要sql语句就可以实现列转行。

下面给出该方法的示例:

select a,b,c from
(with test as (select 'aaa' a,'bbb' b,'1,2,3' c from dual)
select a,b,substr(t.ca,instr(t.ca, ',', 1, c.lv) + 1,instr(t.ca, ',', 1, c.lv + 1) - (instr(t.ca, ',', 1, c.lv) + 1)) AS c
from (select a,b,',' || c || ',' AS ca,length(c || ',') - nvl(length(REPLACE(c, ',')), 0) AS cnt FROM test) t,
(select LEVEL lv from dual CONNECT BY LEVEL <= 100) c where c.lv <= t.cnt )

执行以上代码,结果如下图:

Oracle逗号分隔列转行实现方法

模拟数据列 c 中的内容“1,2,3”被转成了三行,前面两列的内容同时附带过去。在实际运用时,只要把

select 'aaa' a,'bbb' b,'1,2,3' c from dual 替换成实际需要转换的数据表中的字段即可,其中c字段必须是要进行转换的保存逗号分隔内容的字段。下面的内容都可以不需要更改。其中“LEVEL <= 100”中的数字100代表匹配字段内容中出现逗号的次数,可以自行更改。

标签:Oracle,列转行
0
投稿

猜你喜欢

  • php实现生成验证码实例分享

    2024-05-02 17:13:26
  • python虚拟环境迁移方法

    2021-09-13 07:52:51
  • python Task在协程调用实例讲解

    2021-06-28 21:39:32
  • GoLang中的timer定时器实现原理分析

    2024-04-23 09:36:12
  • python中列表的切片与修改知识点总结

    2023-08-29 00:49:08
  • php中运用http调用的GET和POST方法示例

    2023-11-23 02:39:35
  • php json_encode与json_decode详解及实例

    2023-07-04 22:46:27
  • Linux下安装MySQL教程

    2024-01-19 08:05:18
  • python装饰器简介---这一篇也许就够了(推荐)

    2021-02-21 23:09:20
  • Django1.9 加载通过ImageField上传的图片方法

    2022-11-17 10:07:12
  • python数字类型和占位符详情

    2022-10-03 06:36:32
  • 如何在Win10系统使用Python3连接Hive

    2023-08-10 07:00:39
  • MySQL 导入慢的解决方法

    2024-01-22 12:08:42
  • python绘制雷达图实例讲解

    2022-03-11 01:58:23
  • MySQL远程无法连接的一些常见原因总结

    2024-01-24 21:24:21
  • SQL Server 2012 安装与启动图文教程

    2024-01-27 08:33:35
  • oracle用户权限管理使用详解

    2024-01-17 13:06:58
  • python geemap的安装步骤及环境配置

    2023-05-13 18:07:35
  • PHP PDOStatement::bindValue讲解

    2023-06-14 11:16:02
  • Python入门教程(二)Python快速上手

    2023-10-16 08:54:09
  • asp之家 网络编程 m.aspxhome.com