`

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函数使用介绍.doc

    oracle-trunc函数使用介绍.doc

    oracle trunc函数使用介绍

    #### 二、TRUNC函数用于日期数据类型 ##### 1. 语法格式 ```sql TRUNC(date[, fmt]) ``` - **date**: 需要被截断的日期值。 - **fmt**: 可选参数,用于指定日期格式。如果不提供此参数,默认为去除日期的时间部分,...

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

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

    oracle trunc()函数的使用方法

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

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

    Oracle数据库中的`TRUNC`函数是一个非常实用的函数,它在处理日期和数值时具有不同的功能。本篇文章将深入解析`TRUNC`函数在日期和数值处理中的具体用法。 ### 日期处理 在日期处理方面,`TRUNC`函数主要用于截取...

    trunc函数应用实例

    `TRUNC`函数在Oracle数据库中是一个非常实用的日期处理函数,它被广泛应用于日期比较、事务调度和其他需要精确控制日期时间的操作中。在没有指定`fmt`参数时,`TRUNC`函数会将日期时间截断到最近的天。例如,`SELECT...

    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()函数的使用方法

    Oracle数据库中的TRUNC函数是一个非常实用的工具,用于处理日期和数字类型的数据。它有两种主要的用法,分别针对日期和数字。 对于日期,TRUNC函数的主要作用是将日期值截断到特定的时间元素,例如年、月、日、小时...

    postgresql 兼容 oracle 函数

    3. **数学和转换函数**:如ROUND、TRUNC、TO_CHAR、TO_DATE等,这些在数据转换和计算中十分常用。 4. **游标和PL/SQL兼容性**:尽管PostgreSQL原生支持PL/pgSQL,但orafce提供了更接近Oracle的PL/SQL语法,包括游标...

    oracle系统内置函数大全

    22. TRUNC函数:将数字截断至指定的小数位数。 日期函数 1. ADD_MONTHS函数:在日期上增加指定的月份数。 2. LAST_DAY函数:返回给定月份中的最后一天。 3. MONTHS_BETWEEN函数:计算两个日期之间的月份差异。 4. ...

    oracle函数大全(CHM格式).rar

    Oracle数据库是世界上最广泛使用的数据库系统之一,以其强大的功能和稳定性著称。在Oracle数据库中,函数扮演着至关重要的角色,它们允许用户进行复杂的计算、数据处理和信息提取。"Oracle函数大全(CHM格式).rar...

    Oracle内建函数大全

    Oracle数据库是世界上最广泛使用的数据库系统之一,其强大的功能和丰富的内置函数库是其核心优势之一。本文将深入探讨Oracle内建函数,旨在帮助用户更好地理解和利用这些功能来优化数据库操作。 1. **数学函数** -...

    Oracle10G函数大全(chm格式的,比较全面)

    Oracle 10G是Oracle数据库的一个重要版本,它包含了丰富的函数和特性,为数据库管理和开发提供了强大的支持。本文将深入探讨Oracle 10G中的一些关键函数,旨在帮助你更好地理解和利用这些工具。 1. **数学函数**: ...

    oracle最全函数大全

    ### Oracle 最全函数大全 #### 一、总体介绍 Oracle 数据库提供了丰富的内置函数来处理各种数据需求。这些函数可以大致分为以下几类:分析函数、聚合函数、转换函数、日期型函数、字符型函数、数值型函数以及其他...

    oracle 10g函数大全.

    Oracle 10g是一款历史悠久但仍然广泛使用的数据库管理系统,它提供了丰富的函数库,使得SQL查询和数据处理变得更为强大和灵活。在这个“Oracle 10g函数大全”中,我们将会探讨一些重要的Oracle 10g函数,这些函数...

    SQLServer和Oracle的常用函数对比

    - Oracle中使用`TRUNC()`函数。 5. **四舍五入** - SQLServer中使用`ROUND()`函数。 - Oracle中同样使用`ROUND()`函数。 6. **e的幂** - SQLServer中使用`EXP()`函数。 - Oracle中同样使用`EXP()`函数。 7. ...

Global site tag (gtag.js) - Google Analytics