Oracle数据库中的trunc()函数是常用的函数,主要用来做数学计算,大家对它应该是比较熟悉的.来几个例子吧:
SELECT TRUNC(880000/10000) FROM DUAL // result:88
SELECT TRUNC(888888/10000) FROM DUAL // result:88
// 第二个参数是要保留的小数位
SELECT TRUNC(888888/10000, 2) FROM DUAL // result:88.88
// 第二个参数是把结果的个位设成0
SELECT TRUNC(888888/10000, -1) FROM DUAL // result:80
这几个方法相信大家也用过,我就不多说了,现在讲重点: 我今天在做项目时写了个SQL语句,因为这个语句很复杂,所以换一个简单的来举例.
要求:查找一堆数据,把学生的各门科目的成绩查出来,并做一个统计总和.
// 相信大家会这样写
SELECT
NVL(语文, 0) 语文
, NVL(数学, 0) 数学
, NVL(英语, 0) 英语
, NVL(历史, 0) 历史
, NVL(地理, 0) 地理
, NVL(物理, 0) 物理
, NVL(化学, 0) 化学
FROM students
// 把值取出来后,再写Integer.parseInt(xxx)把这几门科目累加起来
可我不愿再去写这样的Java代码,我就把这个求总和功能写在SQL里,像这样
SELECT
NVL(语文, 0) 语文
, NVL(数学, 0) 数学
, NVL(英语, 0) 英语
, NVL(历史, 0) 历史
, NVL(地理, 0) 地理
, NVL(物理, 0) 物理
, NVL(化学, 0) 化学
, TRUNC(语文+数学+英语+历史+地理+物理+化学) 总分
FROM students
如果这些字段在数据库中是NOT NULL的,这个SQL语句是没有问题的,但如果有某个字段不是NOT NULL的,这个SQL就有问题了,原因是当加到某个
空字段时,其结果也为空,所以查出来的总分有可能是空的.这里的NVL()函数对TRUNC()求总分是不起作用的,因为TRUNC()累加的字段的值是从数
据库中取的,并非NVL()的计算结果取得.
也许你会想,我用别名累加总可以吧,让它找不到数据库字段的值,好让它找别名取值,像这样:
SELECT
NVL(语文, 0) 语
, NVL(数学, 0) 数
, NVL(英语, 0) 英
, NVL(历史, 0) 历
, NVL(地理, 0) 地
, NVL(物理, 0) 物
, NVL(化学, 0) 化
, TRUNC(语+数+英+历+地+物+化) 总分
FROM students
没错,它现在是找不到数据库字段的值,但它不会像你想象的那样取别名的值,而是抛给你一个错误信息.
分享到:
相关推荐
Oracle 中的 TRUNC 函数用法处理日期、数字类型数据 TRUNC 函数是 Oracle 中的一个重要函数,它可以用来截断日期和数字类型的数据。下面我们将详细介绍 TRUNC 函数的用法和特点。 一、日期 TRUNC 函数 TRUNC 函数...
详细介绍了 oracle 内置 trunc 函数的使用场景及实例,对日期格式和数字格式的数据进行操作
oracle trunc函数使用介绍 1.TRUNC(for dates) TRUNC函数为指定元素而截去的日期值。 其具体的语法格式如下: TRUNC(date[,fmt])
trunc函数在日期比较和事务执行中是经常要使用到的一个函数,以前使用比较多的是忽略参数fmt的应用,这时默认返回的是距离当前最近的上一个整数日期.比如语句select trunc(sysdate) from dual;就可以返回当天的整数...
本文给大家分享的oracle trunc 函数处理日期格式的相关知识,非常具有参考价值,具体请看下文说明吧。 代码如下: select to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) from dual; –显示当前时间 2011-12-29 16:...
主要介绍了Oracle常用函数Trunc及Trunc函数用法讲解,需要的朋友可以参考下
oracle trunc()函数是最常用的函数之一,下面就为您介绍oracle trunc()函数的用法,供您参考,希望可以让您对oracle trunc()函数有更深的认识。 1.TRUNC(for dates) TRUNC函数为指定元素而截去的日期值。 其具体的...
number : 欲处理之数值 decimal_places : 四舍五入 , 小数取几位 ( 预设为 0 ) select round(123.456, 0) from dual; 返回123 select round(123.456, 1) from dual; 返回123.5 select round(-123.456, 2) from ...
TRUNC函数为指定元素而截去的日期值。下面通过本文给大家介绍Oracle自我补充之trunc()函数的使用方法,感兴趣的朋友一起看看吧
ORACLE 日期时间函数大全 ORACLE 日期时间函数大全是一个功能强大且实用的函数集,提供了多种日期和时间处理函数,可以满足不同应用场景下的日期和时间处理需求。下面是 ORACLE 日期时间函数大全的详细介绍: 一、...
Oracle常见函数整理 Oracle提供了多种函数来处理日期、数字和字符类型的数据,以下是常见的Oracle函数整理: 日期函数: 1. 日期转字符型:to_char()函数将日期类型转换为字符类型,例如to_char(sysdate,'YYYY-MM...
本文将详细介绍Oracle round()函数与trunc()函数区别,需要了解的朋友可以参考下
SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数; SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual; A A ZERO SPACE --------- --------- --------- --------- ...
取整函数(ceil 向上取整 floor 向下取整) 取幂 power 和 求平方根 sqrt 求余 返回固定小数位数 round:四舍五入 trunc:直接截断 返回值的符号 正数返回为1 负数为 1
2. `TRUNC` 函数:舍去小数,但不进位,例如 `select trunc(789.536) from dual;` 3. `MOD` 函数:返回除法的余数,例如 `select mod(10, 3) from dual;` 日期函数 日期函数用于处理日期数据,常用的日期函数有: ...
ORACLE分析函数 ORACLE分析函数是数据库管理系统中的一种功能强大且灵活的分析工具,能够对数据进行复杂的分析和处理。通过使用分析函数,开发者可以更加方便地实现业务逻辑,提高查询效率和数据处理速度。 在本...