一、业务场景 今天需要实现一个table,有一列的效果是:用户姓名A(账号a),用户姓名B(账号b)…这种格式。这就想到oracle的列转行函数vm_concat。...t_step_define sd on fs.step_id = sd.step_id group by sd.step_name 查询出来,是用,分隔的数据,实现列转行显示...二、vm_concat函数补充 想通过id分组,可以用这样的sql: select vm_concat(a) from A group by id 不想用默认的逗号分隔,可以用SQL: ps:下面sql...是替换默认的逗号,用’|'符号 select replace(vm_concat(a),',''|') from A group by id oracle11用vm_concat导致查询缓慢 ps:在...oracle11使用会导致查询缓慢,是因为查询出来的都是clob大字段,可以用SQL,用to_char关键字会快点,不过建议还是除非业务需要,不然速度要求高的场景不要使用 select to_char(
前言:最近在写一些比较复杂的SQL,是一些统计分析类的,动不动就三四百行,也是首次写那么长的SQL,有用到一些奇形怪状的SQL函数,在这里结合网上的例子做一些笔记,以后用到不记得用法可以翻出来看!...1.基础用法:LISTAGG(XXX,XXX) WITHIN GROUP( ORDER BY XXX),就像聚合函数一样,通过Group by语句,把每个Group的一个字段,拼接起来 LISTAGG(...)其实可以把它当作SUM()函数来使用或者理解 (1)示例代码: WITH TEMP AS( SELECT 'CHINA' NATION ,'GUANGZHOU' CITY FROM DUAL...运行结果: (2)示例代码: 查询部门为20的员工列表:SELECT t.DEPTNO,t.ENAME FROM SCOTT.EMP t where t.DEPTNO = '20'; 运行结果: 使用...在不使用Group by语句时候,也可以使用LISTAGG函数: WITH TEMP AS( SELECT 500 POPULATION, 'CHINA' NATION ,'GUANGZHOU' CITY
今天讲一下几个排位(RANK)函数如何使用窗口函数。...SQL> conn scott/triger; 接続されました。...SQL> col ENAME for a30 SQL> set lin 120 pages 999 SQL> SELECT deptno, ename, sal, RANK() OVER (PARTITION...1100 3 20 SMITH 800 4 我们可以看到使用...可以使用ROW_NUMBER当作分析函数。
1、LTRIM()---去掉列值左边的空格 如下代码: select * from dbo.course where tno='t003' and cno='c0013' image.png 我们发现这条行数据的...cname列值最左侧存在一个空格,为了数据的准确性,我们现在需要去掉空格,下面是解决代码: select LTRIM(cname),cno,tno from dbo.course where tno='...2、RTRIM()---去掉列值右边的空格 ---作用和LTRIM()一样,这里不做介绍 3、replace(计算字段,' ','')---去掉计算字段列值中所有的空格,如下代码: select cname...现在有个需求,需要去掉cname字段列值中的所有空格,下面解决代码: select replace(cname,' ',''),cno,tno from dbo.course where tno='t003
窗口函数的名字是over()函数,常用的有两个属性partition by和order by,partition by类似于group by,我们通常将group by叫做分组,而partition by...,后面有星号 (*) 的函数允许完整的语法,包括windowing_clause。...SQL> set autot on SQL> select t..../from client 7 sorts (memory) 0 sorts (disk) 12 rows processed --不使用窗口函数取得上面的结果...client 28 sorts (memory) 0 sorts (disk) 12 rows processed 简单比较一下,似乎使用窗口函数时的
Java程序员通用的做法是在service层将接收的"1001,1002,1003"拆分(使用java split函数),然后封装List,将List传递给DAO,再传递给ORM持久层的xml调用sql...解决方案 本文要做的就是单句SQL实现该功能。 先分析一下,该业务有两个关键点。 一是字符串拼接,oracle(11.2)提供了listagg函数已经实现了该功能,我们直接使用就可以。...二是字符串拆分,oracle没有实现该功能,但是java提供了split函数实现了字符串拆分功能。 我们可以参考java的split函数写一个oracle版split函数。...,和listagg函数联合使用,需要构建两张表。...与listagg函数联合查询: ? 注意:listagg是oracle 11.2版本的新功能。 至此,便简单实现了oracle的字符拆分与拼接。
目录 一、 前言 二、什么是函数 1、哑表dual 2、字符函数 3、数字函数 4、日期函数 5、类型转换函数 6、千年虫: ---- 一、 前言 前面我们学了一些简单的用法,今天要学习oracl函数的使用...,函数是oracle非常重要的功能,如果将函数学会了,那么基本上在项目的一些增删改查功能,就可以很轻松的上手了,所以这篇文章一定要认真的看 二、什么是函数 这里的函数相当于java中写好的一些方法,有名字...通常用在select语句中,作为查询的目标表结构,oracle保证dual里面永远只有一条记录。...select length(last_name) from s_emp; nvl 替换列中为null的值 在前面的章节已经使用过了...数据库中表示一个日期数据的几种方式 1.sysdate 2.oracle默认的日期格式 例如:'25-MAY-95' 3.to_date函数转换
行转列字段值不固定,只能拼SQL了. --1.case when DECLARE @sql NVARCHAR(MAX) SET @sql = N'' SELECT @sql = @sql + N', '...= N'SELECT [name]' + @sql SET @sql = @sql + CHAR(10) + N'FROM #temp GROUP BY [name]' EXEC(@sql) --2....pivot SET @sql = N'' SELECT @sql = @sql + N', ' + CHAR(10) + QUOTENAME([type]) + N' = ISNULL('+ QUOTENAME...([type]) +N', 0)' FROM (SELECT DISTINCT [type] FROM #temp) T SET @sql = N'SELECT [name]' + @sql SET...) --2.列转行 IF OBJECT_ID('tempdb..
今天讲一下错行函数(lag,lead)函数如何使用窗口函数。...Lag(exp_str,offset,defval) over() Lead(exp_str,offset,defval) over() --exp_str要取的列 --offset...SQL> select t.* from test_student_score t; STUDENT_ID SUBJECT_ID SCORE ---------- ---------- --...先看一下不用这两个函数式的原始输出: SQL> select * from test_student_score t where t.subject_id = 3; STUDENT_ID SUBJECT_ID...现在我们还要看看排在他后一位的“score”。
不足位数补位的函数: 1. 左补位函数 LPAD(原始字符,填充后长度,填充字符) 2....右补位函数 RPAD(原始字符,填充后长度,填充字符) 如运行 select lpad('123',6,0) col1 from dual; 结果 select rpad('123',6,0)
上次,将MySQL数据迁移到Oracle介绍了如何使用oracle sql developer连接mysql。同样,sql server的连接也比较相似。 具体也可以点击这里查看。...它的jar使用了jtds,具体可以点击这里查看。 ?...不过,Microsoft发布了sql server jdbc driver 2.0/3.0,他们可以使用于sql server 2005/2008/2008 r2。...是否可以添加sqljdbc4.jar来通过oracle sql developer连接sql server呢?经过测试,目前的oracle sql developer版本无法使用。...这里说明一些使用jtds连接sql server 遇到的问题。
一句话,生产环境不停服的脚本操作,建议使用online。 1、创建索引。...SELECT * FROM ALL_IND_COLUMNS WHERE TABLE_NAME = '表名' 如果在where 子句中有OR 操作符或单独引用复合索引列的后面列则将不会走索引,将会进行全表扫描
在订单信息查询时想获取当天产生的订单信息,查询了解到可以使用Oracle中的TRUNC函数,总结用法如下。...默认取整 SELECT TRUNC(888.666,2) FROM DUAL T; SELECT TRUNC(888.666,-2) FROM DUAL T;--负数表示从小数点左边开始截取2位...<= T.CREATE_DATE; 获取二十四小时内生成的订单: SELECT * FROM ORDER T WHERE SYSDATE-1 <= T.CREATE_DATE; 获取当天生成的订单(使用...TRUNC函数): SELECT * FROM ORDER T WHERE TRUNC(T.CREATE_DATE) = TRUNC(SYSDATE);
在数据库中第一次执行任何与锁定有关的SQL脚本之前,都需要首先运行catblock.sql脚本,该脚本位于$Oracle_HOME/rdbms/admin目录下。...Oracle提供一个名为utllockt.sql的脚本,它会给出一个树形结构的锁等待图,显示持有影响其他会话的锁的会话。使用此脚本,可以看出一个会话正在等待什么锁,哪个会话持有这些锁。...该脚本位于$ORACLE_HOME/rdbms/admin目录下。...下面是执行utllockt.sql脚本的一个示例: SQL> @$ORACLE_HOME/rdbmsa/admin/utllockt.sql Waiting session Type Mode requested...虽然会话682持有一个锁,但在锁信息列中并未显示任何信息(None),因为它不等待任何锁。而会话363显示它请求一个共享(S)锁,并且正等待会话682释放表行上的独占(X)锁。
SQL*Loader 使用简介,欢迎点击上方蓝字“JiekeXu DBA之路”关注我的公众号,标星或置顶,更多干货第一时间到达!...前面一文简单介绍了 Oracle 大数据量导出工具——sqluldr2 的安装与使用,sqluldr2 的诞生主要是用于将大批量的 Oracle 数据快速导出成 CSV/Text 文本格式,方便导入到其他数据库中...,如今国产化进行的如火如荼,这个工具也是在国产数据库迁移中使用比较广泛的工具,值得大家去学习与使用,今天要说的是 Oracle 数据库自带的数据导入工具 SQL*Loader(sqlldr),只要你安装了...-- 关键字对SQL*Loader 具有特殊含义,因此是保留的。为避免潜在的冲突,Oracle 建议您不要将 或 用作任何表或列的名称。...从 SQL*Loader 的角度来看,数据文件中的数据被组织为记录。特定数据文件可以是固定记录格式、可变记录格式或流记录格式。可以使用参数在控制文件中指定记录格式。
源环境:RHEL 6.4 + Oracle 11.2.0.4 目的环境:RHEL 6.4 + Oracle 11.2.0.4 DG双机 要求:使用SQL传输表空间DBS_D_JINGYU从源环境到目的环境...transport_set_violations; --确定表空间设为只读 alter tablespace DBS_D_JINGYU read only; ``` 3.expdp导出表空间的元数据 ``` expdp system/oracle...转储文件和数据文件复制到目的数据库服务器 --创建源到目的数据库的数据链 create public database link dest34 connect to system identified by oracle...需要先创建用户jingyu并赋权 create user jingyu identified by jingyu ; grant dba to jingyu; --导入表空间 impdp system/oracle
工作中用到一段比较复杂的SQL查询脚本,使用了listagg()函数实现了具有多个值的字段的填充(即,列表聚合,list aggregation(我猜的))。...————————————————————————- 这是一个Oracle的列转行函数:LISTAGG() 先看示例代码: with temp as( select 'China' nation ,...同样是聚合函数,还有一个高级用法: 就是over(partition by XXX) 也就是说,在你不使用Group by语句时候,也可以使用LISTAGG函数: with temp as( select...within GROUP (order by city) over (partition by nation) rank from temp 运行结果: 总结:LISTAGG()把它当作SUM()函数来使用就可以了...Oracle Database SQL Language Reference上有关listagg()函数的描述如下: —————————————————————————————————————————–
文章目录 一、使用生成函数求解多重集 r 组合数 二、使用生成函数求解多重集 r 组合数 示例 参考博客 : 【组合数学】生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 |...与常数相关 | 与二项式系数相关 | 与多项式系数相关 ) 【组合数学】生成函数 ( 线性性质 | 乘积性质 ) 【组合数学】生成函数 ( 移位性质 ) 【组合数学】生成函数 ( 求和性质 ) 【组合数学...】生成函数 ( 换元性质 | 求导性质 | 积分性质 ) 【组合数学】生成函数 ( 性质总结 | 重要的生成函数 ) ★ 【组合数学】生成函数 ( 生成函数示例 | 给定通项公式求生成函数 | 给定生成函数求通项公式...) 【组合数学】生成函数 ( 生成函数应用场景 | 使用生成函数求解递推方程 ) 一、使用生成函数求解多重集 r 组合数 ---- S = \{ n_1 \cdot a_1, n_2 \cdot a_...- 1, r) 是在重复度不受限制的情况下的选取结果 , 如果重复度受限制 , 就需要使用生成函数进行计算 ; 如添加如下限制 : a_1 最多能取 3 个 , a_2 最少取 4
不过,准备使用PL SQL Developer时,最新版本8.0发现官网只有32位版本的。果不如此,无法连接oracle 11g r2 64bit。...同样,经过测试,网上的通过pl sql developer连接64位oracle的日志的操作方法都不可行。也许是oracle版本太新的缘故吧。...虽然PL SQL Developer使用者很多,没办法,我这边无法使用了。不过,还有Oracle SQL Developer么,有64位版本,原生支持oracle 11g r2 64bit。...使用起来感觉一点都不属于pl sql developer的,款且是官方的。...祝大家使用oracle 11g r2愉快咯。
前言 写这一篇文章也是因为项目从SQL数据库导入Oracle数据库中遇到的问题,主要是我们要导入的数据有年月的分割表的查询。...我们还是要的Odbc连接的那个SQL数据库。...实现思路 因为我们想要的表名最后四位就是YYYYMM代表年月的数字,想要获取对应的表名我们可以分为三步: 获取表名最后六位。(substr) 然后通过转义的方式把是数字的转换为一个特殊字符。...(instr) 代码实现 通过substr函数获取表名最后六位 substr(string, a, b); 参数: string 需要截取的字符串 a 截取字符串的开始位置(注:当a等于0或1时,都是从第一位开始截取...上图中可以看到我们用substr的函数只显示最后6位的名称了。
领取专属 10元无门槛券
手把手带您无忧上云