`

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 函数用法处理日期、数字类型数据 TRUNC 函数是 Oracle 中的一个重要函数,它可以用来截断日期和数字类型的数据。下面我们将详细介绍 TRUNC 函数的用法和特点。 一、日期 TRUNC 函数 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()函数的使用方法,感兴趣的朋友一起看看吧

    ORACLE日期时间函数大全

    ORACLE 日期时间函数大全 ORACLE 日期时间函数大全是一个功能强大且实用的函数集,提供了多种日期和时间处理函数,可以满足不同应用场景下的日期和时间处理需求。下面是 ORACLE 日期时间函数大全的详细介绍: 一、...

    oracle常见函数整理

    Oracle常见函数整理 Oracle提供了多种函数来处理日期、数字和字符类型的数据,以下是常见的Oracle函数整理: 日期函数: 1. 日期转字符型:to_char()函数将日期类型转换为字符类型,例如to_char(sysdate,'YYYY-MM...

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

    本文将详细介绍Oracle round()函数与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 数字函数

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

    oracle函数总结

    2. `TRUNC` 函数:舍去小数,但不进位,例如 `select trunc(789.536) from dual;` 3. `MOD` 函数:返回除法的余数,例如 `select mod(10, 3) from dual;` 日期函数 日期函数用于处理日期数据,常用的日期函数有: ...

    ORACLE分析函数.ppt

    ORACLE分析函数 ORACLE分析函数是数据库管理系统中的一种功能强大且灵活的分析工具,能够对数据进行复杂的分析和处理。通过使用分析函数,开发者可以更加方便地实现业务逻辑,提高查询效率和数据处理速度。 在本...

Global site tag (gtag.js) - Google Analytics