`

Oracle之trunc()函数

阅读更多
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函数使用实例

    详细介绍了 oracle 内置 trunc 函数的使用场景及实例,对日期格式和数字格式的数据进行操作

    Oracle中trunc()函数用法处理日期、数字类型数据

    Oracle中trunc()函数用法处理日期、数字类型数据

    oracle trunc函数使用介绍

    oracle trunc函数使用介绍 1.TRUNC(for dates) TRUNC函数为指定元素而截去的日期值。 其具体的语法格式如下: TRUNC(date[,fmt])

    trunc函数应用实例

    trunc函数在日期比较和事务执行中是经常要使用到的一个函数,以前使用比较多的是忽略参数fmt的应用,这时默认返回的是距离当前最近的上一个整数日期.比如语句select trunc(sysdate) from dual;就可以返回当天的整数...

    日常收集整理oracle trunc 函数处理日期格式(很实用)

    本文给大家分享的oracle trunc 函数处理日期格式的相关知识,非常具有参考价值,具体请看下文说明吧。 代码如下: select to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) from dual; –显示当前时间 2011-12-29 16:...

    Oracle常用函数Trunc及Trunc函数用法讲解

    主要介绍了Oracle常用函数Trunc及Trunc函数用法讲解,需要的朋友可以参考下

    oracle trunc()函数的使用方法

    oracle trunc()函数是最常用的函数之一,下面就为您介绍oracle trunc()函数的用法,供您参考,希望可以让您对oracle trunc()函数有更深的认识。 1.TRUNC(for dates) TRUNC函数为指定元素而截去的日期值。 其具体的...

    oracle中函数 trunc(),round(),ceil(),floor的使用详解

    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 ...

    Oracle自我补充之trunc()函数的使用方法

    TRUNC函数为指定元素而截去的日期值。下面通过本文给大家介绍Oracle自我补充之trunc()函数的使用方法,感兴趣的朋友一起看看吧

    MYSQL,SQLSERVER,ORACLE常用的函数

    SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数; SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual; A A ZERO SPACE --------- --------- --------- --------- ...

    Oracle round()函数与trunc()函数区别介绍

    本文将详细介绍Oracle round()函数与trunc()函数区别,需要了解的朋友可以参考下

    oracle 数字函数

    取整函数(ceil 向上取整 floor 向下取整) 取幂 power 和 求平方根 sqrt 求余 返回固定小数位数 round:四舍五入 trunc:直接截断 返回值的符号 正数返回为1 负数为 1

    oracle函数大全

    oracle函数大全 tan tanh trunc 字符类型转换 十六精致构成转化二进制

    Oracle日期函数简介

    Oracle日期函数用于对Oracle数据库中的日期及时间进行处理,下面就为您详细介绍Oracle日期函数的用法,希望对您能有所启迪。 (1)SYSDATE和TRUNC 两个Oracle日期函数取Oracle服务器系统的日期和截掉小数部分的功能...

    Oracle数学相关函数小结

    本文总结了Oracle数学相关函数。分享给大家供大家参考,具体如下: 1.绝对值:abs() select abs(-2) value from dual; 2.取整函数(大):ceil() select ceil(-2.001) value from dual;(-2) 3.取整函数(小)...

    oracle函数大全.doc

    ORACLE函数大全 ________________________________________ 作者:[本站编辑] 来源:[CSDN] 浏览:[ ] SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数; SQL> select ascii('A') A,ascii('a') a,...

Global site tag (gtag.js) - Google Analytics