当前位置:  开发笔记 > 数据库 > 正文

在SQL Server中截断(不舍入)小数位

如何解决《在SQLServer中截断(不舍入)小数位》经验,为你挑选了8个好方法。

我正在尝试确定在SQL中截断或删除额外小数位的最佳方法,而不进行舍入.例如:

declare @value decimal(18,2)

set @value = 123.456

这将自动围绕@Value为123.46 ....这在大多数情况下是好的.但是,对于这个项目,我不需要那样做.是否有一种简单的方法来截断我不需要的小数?我知道我可以使用left()函数并转换回小数......还有其他方法吗?



1> Jeff Cuscuti..:
ROUND ( 123.456 , 2 , 1 )

当第三个参数!= 0时,它会截断而不是舍入

http://msdn.microsoft.com/en-us/library/ms175003(SQL.90).aspx

句法

ROUND(numeric_expression,length [,function])

参数

numeric_expression 是精确数字或近似数字数据类型类别的表达式,但位数据类型除外.

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.



2> Jimmy..:
select round(123.456, 2, 1)


答案应该解释函数的参数是什么
SQL ROUND(数字,小数,运算):运算->如果为0,则将结果舍入为小数位数。如果另一个值不为0,则会将结果截断为小数位数。默认为0

3> 小智..:
SELECT Cast(Round(123.456,2,1) as decimal(18,2))



4> 小智..:

这是我能够截断而不是舍入的方式:

select 100.0019-(100.0019%.001)

返回100.0010

你的例子:

select 123.456-(123.456%.001)

返回123.450

现在,如果你想摆脱结束零,只需投下它:

select cast((123.456-(123.456%.001)) as decimal (18,2))

返回123.45



5> 小智..:

实际上无论第三个参数是0还是1或2,它都不会对你的值进行舍入.

CAST(ROUND(10.0055,2,0) AS NUMERIC(10,2))



6> 小智..:

Round有一个可选参数

Select round(123.456, 2, 1)  will = 123.45
Select round(123.456, 2, 0)  will = 123.46


我不明白为什么这会得到提升.以上内容分别为123.450和123.460.
选择圆形(123.456,2,1)将= 123.450

7> SQLMenace..:

你想要小数吗?

如果没有,请使用

select ceiling(@value),floor(@value)

如果你用0做,那么做一轮:

select round(@value,2)



8> James..:

另一个截断没有舍入解决方案和示例.

    Convert 71.950005666 to a single decimal place number (71.9)
    1) 71.950005666 * 10.0 = 719.50005666
    2) Floor(719.50005666) = 719.0
    3) 719.0 / 10.0 = 71.9

    select Floor(71.950005666 * 10.0) / 10.0


`Floor()`的+1,这是删除小数而不进行舍入的方法.太糟糕了Floor()没有第二个参数来指示在哪个位置.但我认为*10)/ 10确实很好地解决了这个问题.
推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有