zoukankan      html  css  js  c++  java
  • sql round

    返回一个数值,舍入到指定的长度或精度。

     Transact-SQL 语法约定 

      语法 

    ROUND (numeric_expression , length [ ,function ] )
      参数 
    numeric_expression
    精确数值或近似数值数据类别(bit 数据类型除外)的表达式。

    length 
    numeric_expression 的舍入精度。length 必须是 tinyint、smallint 或 int 类型的表达式。如果 length 为正数,则将 numeric_expression 舍入到 length 指定的小数位数。如果 length 为负数,则将 numeric_expression 小数点左边部分舍入到 length 指定的长度。

    function 
    要执行的操作的类型。function 必须为 tinyint、smallint 或 int。如果省略 function 或其值为 0(默认值),则将舍入 numeric_expression。如果指定了 0 以外的值,则将截断 numeric_expression。

      返回类型 
    返回以下数据类型。

    表达式结果
     返回类型
     
    tinyint 
     int 
     
    smallint 
     int 
     
    int 
     int 
     
    bigint 
     bigint 
     
    decimal 和 numeric 类别 (p, s)
     decimal(p, s) 
     
    money 和 smallmoney 类别
     money 
     
    float 和 real 类别
     float 
     

      注释 
    ROUND 始终返回一个值。如果 length 为负数,并且大于小数点前的数字个数,则 ROUND 将返回 0。

    示例
     结果
     
    ROUND(748.58, -4)
     0
     

    如果 length 为负数,则无论什么数据类型,ROUND 都将返回一个舍入的 numeric_expression。

    示例
     结果
     
    ROUND(748.58, -1)
     750.00
     
    ROUND(748.58, -2)
     700.00
     
    ROUND(748.58, -3)
     导致算术溢出,因为 748.58 默认为 decimal(5,2),它无法返回 1000.00。
     
    若要向上舍入到 4 位,请更改输入的数据类型。例如:

    SELECT ROUND(CAST (748.58 AS decimal (6,2)),-3); 
     1000.00
     

      示例 
    A. 使用 ROUND 和估计值
    以下示例显示了两个表达式,阐释使用了 ROUND 后,最后一位数将始终为估计值。

    复制代码 
    SELECT ROUND(123.9994, 3), ROUND(123.9995, 3)
    GO
    下面是结果集: 

    复制代码 
    ----------- -----------
    123.9990    124.0000    
    B. 使用 ROUND 和舍入近似值
    以下示例显示舍入和近似值。

    复制代码 
    SELECT ROUND(123.4545, 2);
    GO
    SELECT ROUND(123.45, -2);
    GO
    下面是结果集: 

    ---------- 

    123.4500 


    (1 row(s) affected) 


    -------- 

    100.00 


    (1 row(s) affected) 

    C. 使用 ROUND 截断
    以下示例使用了两个 SELECT 语句,用于阐释舍入和截断之间的区别。第一个语句舍入结果。第二个语句截断结果。

    复制代码 
    SELECT ROUND(150.75, 0);
    GO
    SELECT ROUND(150.75, 0, 1);
    GO
    下面是结果集: 

    复制代码 
    --------
    151.00

    (1 row(s) affected)

    --------
    150.00

    (1 row(s) affected
  • 相关阅读:
    mysql uodate 报错 You can't specify target table '**' for update in FROM clause
    设置mysql InnoDB存储引擎下取消自动提交事务
    SQL插入数据--数据中的某一列来自本表中的数据
    服务器部署静态页面
    json 和 jsonp
    Git 回滚
    java 自定义注解
    java BlockingQueque的多种实现
    java 多线程之ReentrantLock与condition
    storm 架构原理
  • 原文地址:https://www.cnblogs.com/mingyongcheng/p/2673855.html
Copyright © 2011-2022 走看看