分析函数,用于统计排名

语法:函数名() over(order by 排序字段 asc | desc)

row_number() 无论值是否相等,生成连续的行号

-- 1,2,3,4,

select ename,sal,row_number() over (order by sal desc) 名次 from emp;

dense_rank() 如果值相等,则排名相同,排名仍连续

--1,2,2,3,4,5

select ename,sal,dense_rank() over (order by sal desc) 名次 from emp;

rank() 如果值相等,则排名相同,排名不连续

select ename,sal,rank() over (order by sal desc) 名次 from emp;

select ,case when 条件 then '结果' else '' ,from 表

select ename,sal, case

when sal<=1000 then '★'

when sal<=2000 then '★★'

when sal<=3000 then '★★★'

when sal<=4000 then '★★★★'

when sal<=5000 then '★★★★★'

end 等级 from emp;

单行函数(标量函数),1行数据返回1个结果

日期函数

sysdate 返回系统当前时间

--dual 专业用来做运算的表 只有一行一列

select sysdate from dual;

select 1+2+3+4*5*5/7 from dual;

用于加/减,关系运算

select sysdate 当前时间 from dual

--几天之后

select sysdate+3 from dual

--几天之前

select sysdate-3 from dual

--间隔天数

距离年底还有多少天

select to_date('2016-12-31','yyyy-mm-dd')-sysdate from dual

--查询1982年1月1日之后入职的员工

select * from emp

where hiredate>to_date('19820101','yyyymmdd');

months_between(d1,d2) 返回指定日期之间的月份间隔

add_months(d,num) 返回给指定日期加上整数个月后的新日期

--查询入职时间和转正时间 [3个月转正]

last_day(d) 返回指定日期当月的最后1天

--查询每月最后1天入职的员工

--查询每月倒数第3天入职的员工

字符函数:字符串下标从1开始,0也表示第1位

length(str) 返回字符串的长度

select length('abc123456') from dual;

select ename,length(ename) from emp;

substr(str,index)/substr(str,index,length)

select substr('huwen@163.com',6) from dual; --下标从1开始

--java 下标0开始 oracle 下标1 开始

select substr('huwen@163.com',7,3) from dual;

--java 第1才是 下标,第2个参数还是下标

--oracle 第1个是下标 第2个长度

instr(str1,str2) 返回str1中str2出现的下标

--instr就相当于java indexOf()

select instr('yyyy@163.com','@') from dual;

select '&name' from dual

--'&xxx' 表示接收用户输入

select substr('&email',1,instr('&email','@')-1) from dual;

select substr('&email',instr('&email','@')+1) from dual;

转换函数

to_char(d)/to_char(d,fmt) 日期>>字符

--转默认格式的字符串

select to_char(sysdate) from dual;

select to_char(sysdate,'yyyy"年"mm"月"yy"日"') from dual

--转指定格式的字符串:yyyy,mm,dd,hh/hh24,mi,ss,day

select to_char(sysdate,'day') from dual;

select to_char(sysdate,'yyyy/mm/dd') from dual;

select to_char(sysdate,'hh24:mi:ss') from dual;

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

select to_char(sysdate,'fmyyyy"年"mm"月"dd"日" day') from dual;

--fm 表示去掉日期前缀0

select hiredate ,to_char(hiredate,'yyyy') from emp;

to_date(str)/to_date(str,fmt) 字符>>日期

--默认格式

select to_date('1-10月-12')-sysdate from dual;

--指定格式

select to_date('2012-10-1','yyyy-mm-dd')-sysdate from dual;

select to_date('2012-10-1 15:50:00','yyyy-mm-dd hh24:mi:ss')-sysdate from dual;

to_char(num,fmt) 数字>>字符,用于货币的显示

select to_char(10000,'9,999,999.99') from dual;

select ename,sal,

to_char(sal,'$9,999.99') 美元,

to_char(sal,'C9,999.99') 人民币,

to_char(sal,'L9,999.99') 本土 from emp;

数学函数

mod(n1,n2) 返回n1除以n2的余数

select mod(7,2) from dual -- 7%2

ceil(num) 返回大于等于该数的最小整数--向上取整

select ceil(4.0001) from dual

floor(num) 返回小于等于该数的最大整数--向下取整

select floor(4.99999) from dual

round(num)/round(num,s) 四舍五入,s表示小数位数

select round(4.5) from dual;

select round(4.4) from dual;

select round(-11.5) from dual; --java里面是-11 这里-12

--保留3位小数

select round(3.141596,3) from dual;

trunc(num)/trunc(num,s) 截断数字,直接舍去

select trunc(4.7) from dual;

select trunc(4.79,1) from dual; --保留一位小数

其他函数

nvl(exp1,exp2) 空值替换函数

含义:如果表达式exp1为null,则使用表达式exp2代替

--Oracle排序时,将空值null理解为最大

select ename,sal,comm from emp order by comm desc

select * from emp order by nvl(comm,0) desc,sal desc;

--表达式计算时,如果包含空值null,则返回null

select ename,sal,comm,(sal+nvl(comm,0))*12 年薪 from emp;

decode() 相当于case..when..语句

case when 条件 then 结果 -- 相当于java if else if

decode 就相当于switch 可以判断相等

select ename,deptno,

decode(deptno,10,'技术部',20,'销售部',30,'管理层')

from emp;

select ename,deptno,

decode(deptno,10,'AAA',20,'BBB',30,'CCC') 部门 from emp;

关于oracle数据库(10)函数的更多相关文章

  1. Oracle数据库DECODE函数的使用.

    decode函数是Oracle数据库独有的. 语法为: decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 例子:select decode(sign(变量1-变量2) ...

  2. Oracle数据库to_date函数注意事项

    使用PL/SQL连接到Oracle数据库服务器,执行一条update语句: update pjnl set transtime = to_date('2015-05-14 12:13:20','yyy ...

  3. Oracle数据库--SQL函数

    Oracle SQL函数  1.ASCII返回与指定的字符对应的十进制数;SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii( ...

  4. Oracle数据库有用函数

    有用函数 DECODE 语法例如以下: DECODE(value, if1, then1, if2,then2,if3,then3, . . . else )  Value 代表某个表的不论什么类型的 ...

  5. Oracle数据库的函数

    一.字符函数upper和lower (1).upper和lower upper把小写的字符转换成大小的字符 ,lower把大写字符变成小写字符 . select upper('yes') from d ...

  6. Mysql和Oracle数据库concat()函数

    一.函数的使用参数不同 Mysql支持多个字符串拼接: CONCAT(str1,str2,-) Oralce只支持两个字符串的拼接,若想拼接多个字符串可以嵌套使用concat CONCAT(str1, ...

  7. Oracle数据库常用函数

    Oracle常用函数: 20.COS返回一个给定数字的余弦SQL> select cos(-3.1415927) from dual;COS(-3.1415927)--------------- ...

  8. Oracle数据库over函数的使用

    转自:  https://blog.csdn.net/a1065423444/article/details/75635611 over()函数写法over(partition by expr2 or ...

  9. ORACLE 数据库 MOD 函数用法

    1.求2和1的余数. Select mod(2,1) from dual: 2能被1整除所以余数为0. 2.MOD(x,y)返回X除以Y的余数.如果Y是0,则返回X的值. Select mod(2,0 ...

  10. Oracle数据库常用函数使用--持续更新中

    NVL函数.NVL( string1, replace_with).如果string1为NULL,则NVL函数返回replace_with的值,否则返回原来的值. INSTR函数.用于查找指定字符串是 ...

随机推荐

  1. socket编程之TCP/UDP

    目标: 1.编写TCP服务端客户端,实现客户端发送数据,服务端接收打印 2.采用OOP方式编写TCP服务端客户端,实现客户端发送数据,服务端添加时间戳,返回给客户端 3.采用OOP方式编写UDP服务端 ...

  2. 1.webpack-----模块加载器兼打包工具

    一.webpack的优势 1. 能模块化 JS . 2. 开发便捷,能替代部分 grunt/gulp 的工作,比如打包.压缩混淆.图片转base64等. 3. 扩展性强,插件机制完善,特别是支持 Re ...

  3. docker容器安全

    title: docker容器安全 tags: Docker,容器,安全策略 grammar_cjkRuby: true --- Docker容器的安全性 1.安全策略-Cgroup 1.限制Cpu ...

  4. 使用python修改QQ密保(脚本)

    一.基于以下目的: 1.为了增加对Http协议理解能力,对QQ密保修改的请求进行了分析 2.为了锻炼python的编写能力 3.对web综合知识的理解 花了点时间写了这个脚本,下面介绍脚本的过程 二. ...

  5. anroid平台指纹方案

    神盾的FingerPrint方案 在Java层,神盾主要提供如下几个包: egistec.fingerauth.api.FPAuthListeners; egistec.fingerauth.api. ...

  6. ajax实现下拉列表联动

    下拉框代码 <fieldset style="margin-bottom:5px;"> <div class="form-group"> ...

  7. GCD系列 之(二): 多核心的性能

    全局队列的并发执行 for(id obj in array) [self doSomethingIntensiveWith:obj]; 假设,每个元素要做的事情-doSomethingIntensiv ...

  8. 第一个Android crackme(2016-05)

    第一个Android crackme 0x00 背景 最近在学习Android的逆向,把基本的环境搭好后,看了看<第一行代码--Android>,然后就按照非虫大牛的<Android ...

  9. Debian7安装php5.5/5.6

    ### 1 添加源 echo "deb http://packages.dotdeb.org wheezy-php56 all" >> /etc/apt/sources ...

  10. 如何阅读一本书([美] 莫提默·J. 艾德勒 / 查尔斯·范多伦 )

               进入豆瓣读书 前言 2017年1月2日跟着熊猫书院开始了为期十月的阅读计划. 熊猫书院是一个微信公众号,但仅对熊猫书院学员开放.它是一个很好的读书产品,从入学申请.入学报到.班长 ...