如何截断sql server 2000中的十进制值

时间:2009-07-02 10:35:37

标签: sql-server

我有一个表达:

Select (2345789 * 39.456) / 100 

输出为925554.5078400

我想显示925554.50,即小数点后的2个值。

如果我使用圆形

Select round((2345789 * 39.456)/100, 1)

输出为925554.5000000。但我想要小数点后正好2位数。怎么做?

4 个答案:

答案 0 :(得分:5)

说明显而易见,但925554.5000000和925554.50是相同的数字。

如果你想显示那个带有两个小数位的数字,那么这是你的UI代码的问题,而不是你的数据库。

话虽如此,如果必须在数据库本身中执行此操作,请尝试以下操作:

-- 1 decimal place
SELECT CAST(ROUND(@yourNumber, 1, 1) AS DECIMAL(18, 1))

-- 2 decimal places
SELECT CAST(ROUND(@yourNumber, 2, 1) AS DECIMAL(18, 2))

-- 3 decimal places
SELECT CAST(ROUND(@yourNumber, 3, 1) AS DECIMAL(18, 3))

-- 4 decimal places
SELECT CAST(ROUND(@yourNumber, 4, 1) AS DECIMAL(18, 4))

答案 1 :(得分:1)

我有解决方案也使用截断值

Select (2345789 * 39.456)/100  result-925554.5078400
select cast (ROUND((2345789 * 39.456)/100 ,2,1)as decimal(18,2)) result-925554.50
select cast (ROUND((2345789 * 39.456)/100 ,3,2)as decimal(18,3)) result-925554.507
select cast (ROUND((2345789 * 39.456)/100 ,4,3)as decimal(18,4)) result-925554.5078

确定。我希望你能从中理解。

答案 2 :(得分:0)

尝试(未测试):

SELECT CAST(number as decimal(18,2))

答案 3 :(得分:0)

请参阅:

select ROUND(12345.67890,-4) --result: 10000.00000
select ROUND(12345.67890,-3) --result: 12000.00000
select ROUND(12345.67890,-2) --result: 12300.00000
select ROUND(12345.67890,-1) --result: 12350.00000
select ROUND(12345.67890,0)  --result: 12346.00000
select ROUND(12345.67890,1)  --result: 12345.70000
select ROUND(12345.67890,2)  --result: 12345.68000
select ROUND(12345.67890,3)  --result: 12345.67900
select ROUND(12345.67890,4)  --result: 12345.67890

select ROUND(12345.67890,-4,1) --result: 10000.00000
select ROUND(12345.67890,-3,1) --result: 12000.00000
select ROUND(12345.67890,-2,1) --result: 12300.00000
select ROUND(12345.67890,-1,1) --result: 12340.00000
select ROUND(12345.67890,0,1)  --result: 12345.00000
select ROUND(12345.67890,1,1)  --result: 12345.60000
select ROUND(12345.67890,2,1)  --result: 12345.67000
select ROUND(12345.67890,3,1)  --result: 12345.67800
select ROUND(12345.67890,4,1)  --result: 12345.67890


您可以使用:

select ROUND(12345.67890,1)  --result: 12345.70000

或者:

select ROUND(12345.67890,1,0)  --result: 12345.70000


注意: ROUND(numeric_expression,length [,function])

数值_

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

长度

是否对numeric_expression进行舍入的精度。 length必须是tinyint,smallint或int类型的表达式。当length为正数时,numeric_expression将四舍五入为length指定的小数位数。当length为负数时,numeric_expression在小数点左侧舍入,由长度指定。

功能

是要执行的操作类型。 function必须是tinyint,smallint或int。省略function或者值为0(默认值)时,numeric_expression将四舍五入。如果指定了0以外的值,则会截断numeric_expression。

参考:http://technet.microsoft.com/pt-br/library/ms175003.aspx