oracle中的数值函数整理
主要分为三块介绍(单值函数、聚合函数、列表函数)
一、单值函数(比较简单,看一遍基本也就理解记住了)
1、基本加减乘车没有什么可说的,只需要注意一点,任何值与null一起运算 ,结果都为null,因为null代表着未知值,与null进行加减乘除运算得到的还是未知值,返回的结果还是null。
select 3+null ,3-null,3*null,3/null from dual --执行结果都是null
nvl(cgl,0)-nvl(cglcom,0) 先置为0再进行计算
2、nvl和nvl2 空值置换函数
3、abs 绝对值函数
select abs(2.1),,abs(-2.1) from dual--执行结果都是2.1
4、ceil 、 floor 这两个也比较简单啦
ceil 只入不舍函数
floor 只舍不入函数
select ceil(-2.6),ceil(2.6), floor(-2.6),floor(2.6) from dual
执行结果依次为 -2 3 -3 2
5、round 和 trunc 又是一对有关系的函数
round 按照给定精度进行舍入 两个参数,第一个代表要处理的数值,第二个代表精度,第二个参数可以省略,省略的时候默认值为0
trunc 按照给定精度截取数字 两个参数,第一个代表要处理的数值,第二个代表精度,第二个参数可以省略,省略的时候默认值为0
select round(2.615),round(-2.615),round(2.615,0),round(-2.615,0)
,round(2.615 ,1),round(-2.615,1),round(2.615 ,2),round(-2.615,2) from
dual
执行结果依次为 3 -3 3 -32.6-2.62.62-2.62
select trunc(2.615),trunc(-2.615),trunc(2.615,0),trunc(-2.615,0)
,trunc(2.615 ,1),trunc(-2.615,1),trunc(2.615 ,2),trunc(-2.615,2) from
dual
执行结果依次为1 2 -2 2 -22.6-2.62.61-2.61
注意 : round 和 trunc 这两个函数的第二个参数可以为负值,就是从小数点开始往左数
select round(248.1,-1),round(-248.1,-1),round(248.1,-2),round(-248.1,-2) from dual
执行结果依次为 250 -250 200 -200
select trunc(248.1,-1),trunc(-248.1,-1),trunc(248.1,-2),trunc(-248.1,-2) from dual
执行结果依次为 240 -240 200 -200
6、mod 取余函数
select mod(100,5),mod(22,23),mod(10,4),mod(-10,4),mod(-21.12,7),mod(100,0),mod(100,-21),mod(0,2) from dual
执行结果依次为 0 22 2 -2 -0.12 10016 0
需要注意的是数值为负值和0的情况
根据 mod(value,1) 是否等于0可以判断value值是否为整数。
7、power 和 sqrt 分别是求平方和求平方根的意思
select power(3,2),power(2,-2),SQRT(9),sqrt(0) from dual
执行结果依次为 9 0.25 3 0
需要注意的地方:
sqrt是求平方根的,它就一个参数,而且必须是非负数。
oracle中 0.5可以省略成.5 今天看到.5这个字样的时候着实纠结了一会
8、sign 判断一个数值是正数 还是负数 还是0 正数返回1负数返回-1 0返回0 这个还是比较常用的
select sign(2.1),sign(0),sign(-2.1) from dual
执行结果依次为 1 0 -1
9、其余的一些幂运算 、 三角函数运算的函数就不介绍了,平时的商业开发很少用到,科技工作中会比较常用吧。
二、聚集函数
我们需要一个表来演示相关的例子了,建一个表table_a(代表不同城市早、中、晚的气温数据,数据的合理性就先不要管了)
| name | time | num_morning | num_nooning | num_night |
| 哈尔滨 | 2013-12-14 | 21.0 | 11.0 | |
| 哈尔滨 | 2013-12-15 | 22.0 | 28.0 | 35.0 |
| 哈尔滨 | 2013-12-16 | |||
| 哈尔滨 | 2013-12-17 | 36.0 | 22.0 | |
| 哈尔滨 | 2013-12-18 | 23.0 | 71.0 | 11.0 |
| 北 京 | 2013-12-14 | 33.0 | 33.0 | 30.0 |
| 北 京 | 2013-12-15 | 25.0 | 27.0 | |
| 北 京 | 2013-12-16 | 31.0 | 31.0 | 12.0 |
| 北 京 | 2013-12-17 | 44.0 | 25.0 | 31.0 |
| 北 京 | 2013-12-18 | 24.0 | 25.0 | 23.0 |
| 绥 化 | 2013-12-14 | 19.0 | 18.0 | 21.0 |
| 绥 化 | 2013-12-15 | 24.0 | 24.0 | 21.0 |
| 绥 化 | 2013-12-16 | 25.0 | 25.0 | 24.0 |
| 绥 化 | 2013-12-17 | 24.0 | 24.0 | 31.0 |
| 绥 化 | 2013-12-18 | 21.0 | 19.0 | 12.0 |
1、聚集函数中对于null的态度是 忽略
举个例子看看: 我们查询一下各个城市最近5天每天早上的平均气温
select name ,avg(num_morning) from table_a group by name 执行的结果是22 说明它忽略了两天为空的记录,根据三天计算的平均值
执行结果:
| name | avg(num_morning) |
| 绥 化 | 22.6 |
| 哈尔滨 | 22 |
| 北 京 | 31.4 |
再举个例子:表中有几条哈尔滨早上的气温纪录
select count(num_morning) from table_a where name ='哈尔滨'; 执行结果是3
注意:count(num_morning)可以忽略num_morning为null的数据使用count(*)就不能忽略null了 即时所有字段都为null,count(*)也不会忽略这行(起码还有rowid)
2、常用的聚合函数 max min sum avg count 平时很常用了 举个例子不多说了。
(1)、查询各个城市白天的最高气温、最低气温、总和 、统计天数、平均气温
select name, max(num_morning) 最高气温,min(num_morning)
最低气温,sum(num_morning) 总和,count(num_morning) 统计天数,avg(num_morning) 平均气温
from table_a group by name
执行结果:
| name | 最高气温 | 最低气温 | 总和 | 统计天数 | 平均气温 |
| 绥 化 | 25 | 19 | 113 | 5 | 22.6 |
| 哈尔滨 | 23 | 21 | 66 | 3 | 22 |
| 北 京 | 44 | 24 | 157 | 5 | 31.4 |
3、stddev(标准差函数) variance(标准方差函数) 两者格式与上面的max sum等一致。
4、聚合函数中的 distinct
所有的聚合函数都有一个distinct与all选项。
distinct 表示该列有相同的值的时候只取一列。举个例子说明下:
select count(distinct name),count(name),count(*),count(all name ) from table_a
执行结果: 3 15 15 15
三、列表函数
聚合函数与列表函数的区别:聚合函数是作用在多行的同一列上,组合函数是作用在一行的多个列上,很明显了吧!不明显的话下面有对应的例子,看完保证明显。
1、greatest(取多个数值的最大值) least(取多个数值的最小值)
例子: 取出 1 ,3,2,1,5,4 几个数中的最大值和最小值
select greatest(1,3,2,1,5,4),least(1,3,2,1,5,4) from dual 返回值 5 1
可以对数值进行比较,对字符串进行比较
看完上面的例子再让我们求各个城市每天的最高气温 、最低气温是多少就很简单了,不写了
注意:这两个函数对null的态度跟单值函数一样,当成未知,结果都会返回null
2、coalesce 参数是一串值,返回是第一个出现的不为空的值,如果全都为空 那么返回null
select coalesce(null,'','',null,'1',null) from dual 返回 1
注意:各个参数的类型必须一致。
四、运算优先级
1、符号优先级:圆括号优先级最高、其次是乘除法、再其次是加减法、当优先级相同的时候是从左向右执行。
2、and 和 or的优先级比较: and 优先级 高于 or
举个例子:查询早上气温大于中午并且早上气温大于晚上 或者 中午气温大于晚上的数据
我有两种写法:
select * from table_a where num_morning>num_nooning and num_morning>num_night or num_nooning>num_night;
select * from table_a where num_nooning>num_night or num_morning>num_nooning and num_morning>num_night
经测试两个sql返回结果都一样:
1 哈尔滨 2013-12-17 36.022.0
2 哈尔滨 2013-12-18 23.071.011.0
3 北 京 2013-12-14 33.033.030.0
4 北 京 2013-12-16 31.031.012.0
5 北 京 2013-12-17 44.025.031.0
6 北 京 2013-12-18 24.025.023.0
7 绥 化 2013-12-15 24.024.021.0
8 绥 化 2013-12-16 25.025.024.0
9 绥 化 2013-12-18 21.019.012.0
oracle中的数值函数整理的更多相关文章
- Oracle中的内置函数在sql中的转换整理
程序里面经常会即支持Oracle数据库,又支持sql数据库.而有些Oracle内置函数用的比较多,但在sql中语法有些不同,我做了些整理,希望可以帮助大家.... 1.oracle中的内置函数:ora ...
- 【知识点整理】Oracle中NOLOGGING、APPEND、ARCHIVE和PARALLEL下,REDO、UNDO和执行速度的比较
[知识点整理]Oracle中NOLOGGING.APPEND.ARCHIVE和PARALLEL下,REDO.UNDO和执行速度的比较 1 BLOG文档结构图 2 前言部分 2.1 导读和注意事项 ...
- Oracle数据库sql命令整理
转至:https://blog.csdn.net/weixin_43712330/article/details/88358604 以下为oracle数据库中sql语句的整理,将持续更新01. 如何登 ...
- .Net处理Oracle中Clob类型字段总结
最近在做项目中用到Clob这个字段,Clob是存储无限长字符的Oracle字段,用的时候网上找资料找了好久,内容不是很多,大部分都不能用,当然也有可以用的,测试了不同版本,整理了一下,给大家在做项目的 ...
- oracle中schema指的是什么?
看来有的人还是对schema的真正含义不太理解,现在我再次整理了一下,希望对大家有所帮助. 我们先来看一下他们的定义:A schema is a collection of database obje ...
- Oracle中正则表达式的使用
Oracle10开始支持正则表达式. ORACLE中的支持正则表达式的函数主要有下面四个: 1. REGEXP_LIKE : 与LIKE的功能相似 2. REGEXP_INSTR : ...
- Oracle中对列加密的方法
Oracle中对列加密的方法 2011-12-22 17:21:13 分类: Linux Oracle支持多种列加密方式: 1,透明数据加密(TDE):create table encrypt_col ...
- ORACLE FLASHBACK DATABASE 知识整理
1.知识储备 1) 只有SYSDBA有权执行,闪回前一定要记录当前SCN 2) 需要停机,并要求处于ARCHIVELOG模式中 3) 闪回日志不能被复用和归档,是自动管理的.RVWR ...
- Oracle中的二进制、八进制、十进制、十六进制相互转换函数
原文:Oracle中的二进制.八进制.十进制.十六进制相互转换函数 Oracle中的二进制.八进制.十进制.十六进制相互转换函数 今天在网上看到一篇关于在oracle中对各种进制数进行转换的帖子, ...
随机推荐
- Python内置模块(2)
这一部分主要介绍sys.os.hashlib和re模块.其中的re模块介绍得非常详细,是本部分的重点! 均为python3.5.1环境. 一.sys模块 sys模块涉及的主要是与python解释器相关 ...
- Mysql中的各种timeout
在使用MySQL的过程中,你是否遇到了众多让人百思不得其解的Timeout?那么这些Timeout之后,到底是代码问题,还是不为人知的匠心独具?本期Out-man,讲述咱们MySQL DBA自己的Ti ...
- SpringMVC核心——映射问题
一.SpringMVC 使用 RequestMapping 来解决映射问题. 二.在学习 RequestMapping 之前,首先来看一张图. 这张图表示的是发送一次 http 请求时,所包含的请求 ...
- Sprint 3计划
一.计划目标: 1.完成基本的首页面的信息查询功能 2.学生家教用户注册和登录,将信息存储到数据库 3.完成家教的资格评定设定和个人教学内容备份信息 二.燃尽图 三.项目具体工作细则 待明天工作会议分 ...
- ADO.NET 基础
*程序要和数据库交互要通过ADO.NET进行,通过ADO.NET就能在程序中执行SQL了,ADO.NET中提供了对各种不同数据库的统一操作接口. 1.连接SQLServer 连接字符串,程序通过链接字 ...
- php Calender(日历)代码
代码如下: <?php /** * * 我的日历 * date_default_timezone_set date mktime * @param int $year * @param int ...
- 几种web字体格式
目前,文字信息仍是网站最主要的内容,随着CSS3技术的不断成熟,Web字体逐渐成为话题,这项让未来Web更加丰富多彩的技术拥有多种实现方案,其中之一是通过@font-face属性在网页中嵌入自定义字体 ...
- Python入门笔记(5):对象
一.学习目录 1.pyhton对象 2.python类型 3.类型操作符与内建函数 4.类型工厂函数 5.不支持类型 二.思考 1.Python解释执行原理? 2.Python对象机制? 3.Pyth ...
- 重新想象 Windows 8 Store Apps (51) - 输入: 涂鸦板
[源码下载] 重新想象 Windows 8 Store Apps (51) - 输入: 涂鸦板 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 涂鸦板 通过 Poin ...
- FreeBSD的新一代包管理工具Pkg 1.3.0 发布
Pkg 是 FreeBSD 下一代的打包管理工具,用来替代原来的 pkg_info/pkg_create/pkg_add 工具,可以本地打包,也提供远程打包,主要是为了方便远程二进制包升级. Pkg ...