SQL中的Round函数

前言
上篇博客介绍了round函数,以下是博客链接: https://blog.csdn.net/renmengmeng520/article/details/82085902 本篇博客介绍下round函数在SQL中的应用。
内容
round函数:返回一个数值,舍入到指定的长度或精度。 语法 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(746.58, -4)

0

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

示例

结果

ROUND(746.58, -1)

750.00

ROUND(746.58, -2)

700.00

ROUND(746.58, -3)

导致算术溢出,因为 746.58 默认为 decimal(5,2),它无法返回 1000.00。

若要向上舍入到 4 位,请更改输入的数据类型。 例如:

SELECT ROUND(CAST (746.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)

评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个处女座的程序媛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值