`

Oracle单行函数和多行函数实例

 
阅读更多

单行函数和多行函数示意图:

 

  单行函数分为五种类型:字符函数、数值函数、日期函数、转换函数、通用函数

 

  单行函数:

  --大小写控制函数

  select lower('Hello World') 转小写, upper('Hello World') 转大写 from dual;

  --initcap: 首字母大写

  select initcap('hello world') 首字符大写 from dual;

  --字符控制函数

  -- concat: 字符连接函数, 等同于  ||

  select concat('Hello',' World') from dual;

  --substr:求母串中的某个子串

  select substr('Hello World',3) from dual;

  select substr('Hello World',3,4) from dual;

  --length和lengthb: 字符数和字节数

  select length('China') 字符数, lengthb('China') 字节数  from dual;

  --instr:在母串中,查找子串的位置

  select instr('Hello World','ll') from dual;

  --lpad,rpad: 左右填充,将abcd用*填充到10位

  select lpad('abcd',10,'*') 左填充, rpad('abcd',10,'*') 右填充 from dual;

  --trim: 去掉字符串前后指定的字符

  select trim('H' from 'Hello WorldH') from dual;

  --replace:字符串替换函数

  select replace('Hello Wordl','l','*') from dual;

  --数字函数

  select round(45.926,2) 四舍五入, trunc(45.926,2)  截断 ,mod(1600,300) 求于 from dual;

  --ROUND函数

  select round(45.923,0) 整数位, round(45.923,-1) 十位,round(45.923,-2) 百位 from dual;

  --日期函数

  --显示当前日期

  select sysdate from dual;

  --显示时间部分

  select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

  --显示昨天,今天和明天,加减数字仍未日期

  select sysdate-1 昨天, sysdate 今天, sysdate+1 明天 from dual;

  --两个日期相减,结果为相差的天数,查询员工信息,显示员工工龄。两个日期不能相加

  select empno,ename, sysdate-hiredate 天 from emp;

  --查询员工信息,显示员工工龄,分别按照天,星期,月显示

  select empno,ename,sysdate-hiredate 天,(sysdate-hiredate)/7 星期, (sysdate-hiredate)/30 月 from emp;

  --months_between:两个日期相差的月数

 

select (sysdate-hiredate)/30 方式一, months_between(sysdate,hiredate) 方式二 from emp;

  --add_months:在指定日期上加上若干个月

  select add_months(sysdate,1)  下个月, add_months(sysdate,123) "123个月后" from dual

  --last_day: 某个日期当月的最后一天

  select last_day(sysdate) from dual;

  --next_day:下周六

  select next_day(sysdate,'星期五') from dual;

  --对日期进行四舍五入

  select round(sysdate,'MONTH')  月,round(sysdate,'YEAR') from dual;

  --对日期进行截断

  select trunc(sysdate,'MONTH')  月,trunc(sysdate,'YEAR') from dual;

  --日期格式

  select * from emp where hiredate=to_date('1982-01-23','yyyy-mm-dd');

  -- 查询当前日期:显示:  2011-09-17 15:12:15今天是星期六

  select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss"今天是"day') from dual;

  --查询员工信息,显示员工的编号,姓名,月薪,要求有货币代码(L),千位符(,),小数点(。),

  select empno,ename,to_char(sal,'L9,999.99') from emp;

  --通用函数

  --nvl(exp1,exp2):当exp1为空时,返回exp2

  --nvl2(exp1,exp2,exp3):当exp1为空时,返回exp3;否则返回exp2

  select ename,sal*12+nvl2(comm,comm,0) 年收入 from emp;

  --NULLIF (expr1, expr2),如果expr1=expr2,返回null;否则,返回expr1

  select nullif('abc','abc') from dual;

  select nullif('abc','abcaa') from dual;

  --COALESCE :找到参数列表中,第一个不为空的值

  select ename,comm,sal,COALESCE(comm,sal) from emp;

  --给员工涨工资,根据职位涨,总裁涨1000,经理涨600 其他人员涨400

  select ename,job,sal 涨前工资, case job when 'PRESIDENT' then sal+1000

  when 'MANAGER'   then sal+600

  else sal+400

  end 涨后工资

  from emp;

  select ename,job,sal 涨前工资, decode(job,'PRESIDENT',sal+1000,

  'MANAGER',sal+600,

  sal+400) 涨后工资

  from emp;

  多行函数

  和单行函数相比,oracle提供了丰富的基于组的,多行的函数。这些函数能在select或select的having子句中使用,当用于select子串时常常都和GROUP BY一起使用。多行函数分为接收多个输入,返回一个输出。

  组函数:

  --求员工的工资总和

  select sum(sal) from emp;

  --求个数

  select count(*) from emp;

  --求平均工资

  select sum(sal)/count(*) 方式一, avg(sal) 方式二 from emp;

  --关于空值:组函数会自动滤空

  select count(*), count(comm) from emp;

  --max和min:求最高工资和最低工资

  select max(sal) 最高工资,min(sal) 最低工资 from emp;

  --分组数据:求各个部门的平均工资

  select deptno,avg(sal) from emp group by deptno;

  --group by作用于多列: 按部门,不同的工种,统计平均工资

  --group by作用于多列:先按照第一列分组;如果相同,再按照第二列分组

  select deptno,job,avg(sal) from emp group by deptno,job;

  --:求部门的平均工资大于2000的部门

  select deptno,avg(sal) from emp group by deptno having avg(sal)>2000;

  --group by的增强

  select deptno,job,sum(sal) from emp group by rollup(deptno,job);

  --不同的deptno空两行/取消设置

  break on deptno skip 2/break on null

分享到:
评论

相关推荐

    Oracle函数大全实例

    本文将深入探讨Oracle中的几种主要函数类型:单行函数、多行函数以及分组函数,并给出相应的实例来帮助理解。 1. **单行函数** 单行函数在处理每一行数据时返回一个结果。它们分为字符函数、数字函数、日期函数和...

    Oracle常用函数.pdf

    这些函数主要分为两大类:单行函数和多行函数(也称为聚合函数)。单行函数通常用于处理表中的每一行数据,并返回一个结果;而多行函数则基于一组或多行数据执行特定的计算,并返回一个单一的汇总值。 #### 二、...

    Oracle分析函数教程

    Oracle分析函数是数据库管理系统Oracle中的一个重要特性,自8.1.6版本开始引入,它们用于执行基于组的聚合计算,并且为每个组返回多行结果,而不仅仅是单行。这使得分析函数在数据分析和报表生成方面非常有用,能够...

    oracle将以逗号分隔字符串转多行

    在Oracle数据库中,将逗号分隔的字符串转换为多行是常见的数据处理需求,尤其在需要对每个分隔项进行单独操作时。这个过程通常涉及到字符串处理函数,如`REGEXP_SUBSTR`和`REPLACE`,以及层次查询结构`CONNECT BY`。...

    Oracle分析函数参考手册

    分析函数不同于普通的聚合函数(如SUM、AVG、COUNT等),因为它们能够在每个分组内返回多行结果,而不仅仅是单行汇总。 从Oracle 8.1.6版本开始引入分析函数,这些函数允许开发人员在计算聚合值时考虑当前行之外的...

    Oracle常用Oracle、函数、存储过程[归类].pdf

    Oracle数据库是世界上最流行的数据库管理系统之一,它提供了丰富的功能和工具,包括各种内置的包、存储过程和函数,以满足复杂的数据库管理和应用需求。本篇主要介绍两个常用的Oracle包:dbms_output 和 dbms_job,...

    oracle 函数 oracle函数 存储过程

    Oracle数据库系统提供了丰富的功能,其中包括各种内置函数和存储过程,这些工具对于数据库管理和开发工作至关重要。本文主要聚焦于两个核心组件:`DBMS_OUTPUT`包和`DBMS_JOB`包,详细阐述它们的作用、用法及其相关...

    oracle_PLSQL_语法详细手册

    **FUNCTIONS** 部分则详细介绍了不同类型的函数,如转换函数(如TO_CHAR、TO_DATE等),日期函数(如SYSDATE、ADD_MONTHS等),字符函数(如SUBSTR、UPPER等),数值函数(如ROUND、MOD等),单行函数和多行函数,...

    oracle认证老师的oracle课件

    6. 游标:学习游标在处理单行或多行结果集中的应用。 7. 包(PACKAGE):理解包的用途,包括私有和公有元素,以及包规范和包体的概念。 通过这个Oracle认证老师的课件,你不仅能够获得理论知识,还能通过实例练习...

    Oracle SQL高级编程 中文版

    它全面覆盖了Oracle SQL的各种高级特性,提供了独到的见解和详实的实例,旨在帮助读者在实际工作中更加高效地管理和优化数据库。 1. **子查询**:Oracle SQL中的子查询是SQL查询语句中嵌套的另一个查询,用于在主...

    oracle基础

    SQL函数分为单行函数和多行函数,单行函数包括数字函数、字符函数、时间日期函数等,多行函数则包括分组函数和分析函数。例如,`TO_CHAR(date_column, 'YYYY-MM-DD')`用于将日期转换为字符串,`SUM(salary)`用于计算...

    Oracle Database 12c PL/SQL开发指南 实例源代码

    3. **游标**:在PL/SQL中如何使用游标处理单行或多行数据,以及游标的声明、打开、关闭和循环遍历。 4. **记录类型**:定义和操作记录类型,用于处理动态或不确定的数据结构。 5. **集合类型**:包括数组(PLS_...

    Oracle PL SQL实例精讲(中英文版)

    这个“Oracle PL SQL实例精讲(中英文版)”可能包含了一系列的教程、代码示例以及解释,帮助读者深入理解和掌握PL/SQL的用法。 1. **PL/SQL基础** - **变量声明**:在PL/SQL中,可以声明各种类型的变量,如 ...

    Oracle使用大全

    Oracle的安装是一个重要的起点,包括选择合适的版本(如企业版、标准版等)、配置硬件和操作系统需求、规划数据库实例、安装客户端和服务器组件等步骤。在Oracle01-安装.rar中,你将学习如何下载安装包,配置环境...

    Oracle SQL Reference命令参考文档

    这份超过1000页的文档是Oracle 10g版本的一部分,提供了对SQL语言在Oracle环境下的详尽解释和实例。 在Oracle SQL中,有多个关键概念和技术值得深入探讨: 1. **SQL Plus基础**:SQL Plus是Oracle数据库系统的一个...

    oracle数据库课程课件

    - 数据库实例创建:讲解如何创建和管理Oracle数据库实例。 3. **SQL语言** - SQL基础:学会使用SELECT语句查询数据,INSERT插入数据,UPDATE更新数据,DELETE删除数据。 - SQL高级特性:如JOIN操作、子查询、...

    oracle学习教程

    2. 数据插入(INSERT语句):了解如何向表中添加新记录,包括单行插入和多行插入。 3. 数据更新(UPDATE语句):学习如何修改已存在的记录。 4. 数据删除(DELETE语句):掌握如何删除表中的特定记录。 5. DDL(Data...

    oracle讲义

    1. Oracle体系结构:Oracle数据库的体系结构主要包括实例和数据库两部分。实例是Oracle运行时内存结构和后台进程的集合,而数据库则是物理存储在磁盘上的数据文件。1 体系架构.ppt中可能涵盖了数据库服务器、SGA...

    MLDN_oracle课堂笔记(全).pdf

    文档中也提到了安装过程中的OracleService和TNSListener,这些都是Oracle数据库实例和网络服务配置的一部分。 接下来是数据库的基本操作,包括SQLPlus的使用。SQLPlus是Oracle提供的一个命令行界面工具,用于执行...

    超详细ORACLE培训实例

    #### 第四章 单行函数 - **字符函数**:介绍UPPER、LOWER、SUBSTR等字符处理函数。 - **数值函数**:ABS、MOD、TRUNC等数值计算函数。 - **日期函数**:DATE、MONTHS_BETWEEN等日期操作函数。 #### 第五章 分组...

Global site tag (gtag.js) - Google Analytics