
问题1:
SELECT CAST(“ 123.456”为十进制)将得到123(小数点将被省略).
如果要在小数点后两位.
您需要将以上内容更改为
SELECT CAST('123.456'作为十进制(38,2))===> 123.46
自动环绕!
问题2:
SELECT ROUND(123.75633,2,1),ROUND(123.75633,2)
上面的SQL获得的两个值是不同的,前一个是123.75000,后一个是123.76000.
由于前者在小数点后被截断,因此保留了2位数字.
虽然后者没有被拦截,但四舍五入后自然会得到123.76000

ROUND
返回数字表达式并四舍五入到指定的长度或精度.
语法
ROUND(数字电子表达式,长度[,函数])
参数
numeric_e-xpression
表达精确数值或近似数值数据类型类别(位数据类型除外).
长度
是numeric_e-xpression的四舍五入精度. 长度必须是tinyint,smallint或int. 当length为正数时,numeric_e-xpression会四舍五入为length指定的小数位数. 当length为负数时,numeric_e-xpression会按长度指定的四舍五入到小数点左边.
功能
是要执行的操作类型. 函数必须是tinyint,smallint或int. 如果省略function或function的值为0(默认值),则numeric_e-xpression将被四舍五入. 如果指定了非0的值,那么numeric_e-xpression将被截断.

返回类型
返回与numeric_e-xpression相同的类型.
评论
ROUND始终返回一个值. 如果length为负数且大于小数点前的位数,则ROUND将返回0.
示例结果
ROUND(748.58,-4)0
当length为负数时sql 不四舍五入,无论哪种数据类型,ROUND都会返回四舍五入的numeric_e-xpression.
示例结果
ROUND(748.58,-1)750.00
ROUND(748.58,-2)700.00
ROUND(748.58,-3)1000.00

示例
A. 使用ROUND和估算值
下面的示例显示了两个表达式,表示使用了ROUND函数,最后一个数字始终是估计值.
选择ROUND(123.9994,3)sql 不四舍五入,ROUND(123.9995,3)
GO
以下是结果集:
----------- -----------
123.9990 124.0000
B. 使用ROUND和舍入近似值
以下示例显示了舍入和近似值.
声明结果

选择ROUND(123.4545,2)
123.4500
选择ROUND(123.45,-2)
100.00
C. 使用ROUND截断
下面的示例使用两个Select语句来说明舍入和截断之间的区别. 第一条语句将结果取整. 第二条语句将结果截断.
声明结果
选择ROUND(150.75,0)
151.00
选择ROUND(150.75,0,1)
150.00
--------------------------------------------------- -----------------------------日期之间的差异------------------ ---------
当DateDiff(dd,借入日期,getdate())> 30时,则DateDiff(dd,借入日期,getdate())* [单价] * 1.012否则0结束
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-277207-1.html
火腿
不信他取乱来