可使用round(),cast(),convert(),floor(),ceiling()等函数实现其目的。下面介绍下这些函数的简单使用。
功能:将数值或者字段四舍五入为指定的位数。round()会把小数位后边变成0而不是真正意义的保留位数。它只负责四舍五入,不负责截取。
参数格式:
round(column_name,decimal,0)
column_name,要舍入的字段名,decimals,要返回的的小数位数,0表示四舍五入,非0为截取,默认四舍五入0可以不写.
功能:将某种数据类型的表达式显式转换为另一种数据类型
参数格式:
cast(expression as data_type)
expression合理的sql表达式即要处理的转换,as用于分隔两个参数,data_type要转换的数据类型,目标系统提供的数据类型,包含bigint和sql_variant,不能使用用户自定义的参数。
可转换的数据类型也有限,可以是以下值的一个:
二进制,同带binary前缀的效果 : BINARY
字符型,可带参数 : CHAR()
日期 : DATE
时间: TIME
日期时间型 : DATETIME
浮点数 : DECIMAL
整数 : SIGNED
无符号整数 : UNSIGNED
功能:把日期转换为新数据类型的通用函数。用不同的格式显示日期/时间数据。
参数格式:
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(number,significance),将参数number向上舍入(沿绝对值增大的方向)
为最接近的significance的倍数.number要舍入的值,significance要舍入到的倍
数 -- 测试失败
ceiling(expression)
expression合理的sql表达式
功能:向下截取整数
参数格式:
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)
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以外表示截取
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
select convert(decimal(20,3),price) as '价格' from Products
select floor(price) as '价格' from Products --向下取值
select ceiling(price) as '价格' from Products --向上取值