Oracle逗 分隔列转行实现方法
那么,现在如果给出一个权限编 ,要去检索出用后这个权限的用户集合,就会需要在逗 分隔的多个权限编 中去匹配给出的这个权限编 。如果使用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
执行以上代码,结果如下图:
1.新建链接服务器 在图1中选中”链接服务器”,右键选择”新建链接服务器”,如图2,配置相关参数. 2.配置相关参数 在”常规”选项中,填写”链接服务器名称”,访问接口选中 ” Microsoft OLE DB Provider for Oracle”项.其中产品名称.数据源.访问接口字符串请填写配置的Oracle客户端在本地配置的net服务名.如图3所示. 在”安全性”项中,选中使用
另外他们列出的这些区别有些是蛮有意义的,有些可能由于他们本人的MySQL DBA的身份,对Oracle的理解有些偏差,有些则有凑数的嫌疑. 但是总体上结合Baron Schwartz的列表可以让大家大概地了解到Oracle与MySQL的共同之处与差别分别体现在哪些方面.. Robert Treat 1. 有些人说Oracle没有限制,实际上他们说得可能是Oracle不支持LIMIT语法.不过可以rownum虚列来实现,不过会更加麻烦. 2. Oracle不支持偏移(offset)语法. 3. O
在执行计划的开发过程中,转换和选择有这个不同的任务:实际上,在一个查询进行完语法和权限检查后,首先发生通称为”查询转换”的步骤,这里会进行一系列查询块的转换,然后才是”优选”(优化器为了决定最终的执行计划而为不同的计划计算成本从而选择最终的执行计划). 我们知道查询块是以SELECT关键字区分的,查询的书写方式决定了查询块之间的关系,各个查询块通常都是嵌在另一个查询块中或者以某种方式与其相联结:例如: 复制代码 代码如下: select * from employe
行转列 一张表 查询结果为 –行转列 select years,(select amount from Tb_Amount as A where month=1 and A.years=Tb_Amount.years)as m1, (select amount from Tb_Amount as A where month=2 and A.years=Tb_Amount.years)as m2, (select amount from Tb_Amount as A where month=3
TO_DATE格式(以时间:2007-11-02 13:45:25为例) 1. 日期和字符转换函数用法(to_date,to_char) 复制代码 代码如下: select to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) as nowTime from dual; //日期转化为字符串 select to_char(sysdate,’yyyy’) as nowYear from dual; //获取时间的年 select to_char(sys
[sql] 复制代码 代码如下: create table wlbtest1( username varchar2(2), deptID number ); create table wlbtest2( deptName varchar2(10), deptID number ); insert into wlbtest1 values (‘a’, 1); insert into wlbtest1 values (‘b’, 1); insert into wlbtest1 values (‘c’
NO MONEY DAY 1 23 1 1 43 2 1 -45 3 2 42 1 2 -10 2 2 50 3 3 100 8 为了符合阅读习惯,最终 表希望是如下格式: NO MON TUE THR 1 23 43 -45 2 42 -10 50 3 ———————— 咱们一步步来实现: 1.运用DECODE转换行为列 SQL: SELECT NO, DECODE(DAY,1,MONEY,”) DAY1, DECODE(DAY,2,M
New Document 相关资源:TIPTOP硬盘 络隔离官方版_tiptop 络隔离控制,tiptop 络隔离…
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!