SQL精确小数位

SQL精确小数位

可使用round(),cast(),convert(),floor(),ceiling()等函数实现其目的。下面介绍下这些函数的简单使用。

一 、round()

功能:将数值或者字段四舍五入为指定的位数。round()会把小数位后边变成0而不是真正意义的保留位数。它只负责四舍五入,不负责截取。
参数格式:

round(column_name,decimal,0)

column_name,要舍入的字段名,decimals,要返回的的小数位数,0表示四舍五入,非0为截取,默认四舍五入0可以不写.

二、cast()

功能:将某种数据类型的表达式显式转换为另一种数据类型
参数格式:

cast(expression as data_type)

expression合理的sql表达式即要处理的转换,as用于分隔两个参数,data_type要转换的数据类型,目标系统提供的数据类型,包含bigint和sql_variant,不能使用用户自定义的参数。
可转换的数据类型也有限,可以是以下值的一个:
二进制,同带binary前缀的效果 : BINARY
字符型,可带参数 : CHAR()
日期 : DATE
时间: TIME
日期时间型 : DATETIME
浮点数 : DECIMAL
整数 : SIGNED
无符号整数 : UNSIGNED

三、convert()

功能:把日期转换为新数据类型的通用函数。用不同的格式显示日期/时间数据。
参数格式:

convert(data_yepe(length),data_to_be_converted,style)

data_type(length)目标数据类型(带有可选长度),data_to_be_convert需要转换的值,style规定日期/时间的输出格式
cast和convert相同点:
cast与convert都可以执行同样的功能,都可以进行数据类型转换,且都实现了四舍五入功能。
cast和convert不同点:
但convert还提供一些特别的日期格式转换,而cast没有这个功能.cast是ANSI兼容,而convert不是.

四、ceiling()

功能:返回大于或等于所给数字表达式的最小整数,向上截取整数
参数格式:

ceiling(number,significance),将参数number向上舍入(沿绝对值增大的方向)
为最接近的significance的倍数.number要舍入的值,significance要舍入到的倍
数   -- 测试失败
ceiling(expression) 

expression合理的sql表达式

五、floor()

功能:向下截取整数
参数格式:

floor(expression)

expression为合理的sql表达式或字段名

举例说明:
Products表如下:

create table Products
(Prod_id varchar(40),
Product_name varchar(40),
Price numeric(20,10) )

insert into Products (Prod_id,Product_name,Price) values
(newid(),'apple',56.2568956321)

SQL精确小数位_第1张图片
round()函数使用:

select round(price,3) as '价格' from Products  
--四舍五入小数位,其他补0
select round(price,3,0) as '价格' from Products --0表示四舍五入
select round(price,3,1) as '价格' from Products --0以外表示截取

结果:
SQL精确小数位_第2张图片
cast()函数使用:

select cast(price as decimal(10,2)) as '价格' from Products  
--decimal(精度,小数位)精度是总的数字位数,包括小数点左边和右边位数的总和,
--小数位是小数点右边的位数.

结果:
在这里插入图片描述
但是在用cast的时候需要注意的是转化的类型中不要发生位数溢出,如下图所示:

select cast(price as decimal(2,2)) as '价格' from Products

报错如下:
在这里插入图片描述
解决办法:尽可能把转换的类型位数写大点,如:

select cast(price as decimal(20,3)) as '价格' from Products

结果:
在这里插入图片描述
convert()函数使用:

select convert(decimal(20,3),price) as '价格' from Products

结果:
在这里插入图片描述
floor()函数使用:

select floor(price) as '价格' from Products  --向下取值

结果:
在这里插入图片描述
ceiling()函数使用:

select ceiling(price) as '价格' from Products  --向上取值

结果:
在这里插入图片描述

你可能感兴趣的:(SQL)