我有一个情况:SQL Server自定义四舍五入
- 24.9999应为25
- 24.5000应为25
- 24.4999应为24
- 24.1111应为24
我试过Ceiling
,但结果将是25,其中Floor
将是24。
如何做到这一点?
非常感谢您的时间。
注意:让您知道我希望此功能位于computed column
以内可能会有帮助。
我有一个情况:SQL Server自定义四舍五入
我试过Ceiling
,但结果将是25,其中Floor
将是24。
如何做到这一点?
非常感谢您的时间。
注意:让您知道我希望此功能位于computed column
以内可能会有帮助。
用途:
Round(YourNumber, 0)
中的0表示精度(即小数点后的位数);例如,如果你想将42.51修改为42.5,你可以用0代替0。
确保不要使用float
s - 它们有时可能是近似值,这会导致值偶尔舍入不正确。
刚才我在本文接过来一看:
遗憾的是它不是” t英语,但它说:
If you need to use round, try not to use float, use decimal or numeric instead
我试图铸造领域为十进制,和它的作品,这里的小提琴
http://sqlfiddle.com/#!9/3a01fa/4
这里是我的select语句:
select round(cast(smth as decimal)) from tbl
你应该使用圆形(数值_,4 )。长度4表示十进制值的精度的长度。在你的情况下,由于十进制值的长度为4,它将根据4个十进制值进行四舍五入。
select round(cast(column as decimal)) from tbl
将工作不错 但 select round(column, 0) from tbl
不会因为在这种情况下24.5000的工作,很好地将导致24这应该是你的情况25。
,您可以继续像这样为你提供的数据
select CAST(CEILING(24.5000)AS INT)
select CAST(CEILING(24.9999)AS INT)
select CAST(CEILING(24.1111 -1)AS INT)
select CAST(CEILING(24.4999 - 1)AS INT)
或者你有大量的数据,在你具备一定条件的表,那么你可以挑后的十进制值“”点和撰写案例条件accordind到,这不是办法这样做,但达到的效果
declare @t table (ID decimal(18,4))
insert into @t(ID)values (24.5000),(24.9999),(24.1111),(24.4999)
select case when RIGHT(ID, LEN(ID) - CHARINDEX ('.', ID)) - 1 > 4500
THEN CAST(CEILING(ID)AS INT)
ELSE CAST(CEILING(ID - 1)AS INT) END from @t
你是否在寻找类似的东西 - http://stackoverflow.com/questions/7063962/t-sql-average-rounded-to-the-closest-integer – murtazat