使用money格式将sql server 2008中的尾随十进制值删除到1位

时间:2014-06-22 07:49:00

标签: sql-server-2008

我在DB列中有数字,我想用钱,十进制数据类型格式化。

我的查询如下,

SELECT CONVERT(VARCHAR,CAST(CAST(CAST(HouseholdCoverage AS DECIMAL(10,1))/ 12 AS DECIMAL(10,1))
AS money),1) AS HouseholdGoodsInsuredAmount FROM Table

HouseholdCoverage = 1175012

我的查询返回如下所示的值

97,917.70

但我希望结果为

97,917.7 (only 1 number after decimal places).

如果我将值转换为float我会收到错误。

我知道我可以使用parsename来分隔小数位后的值,并在几次修改后再次添加它。但我觉得这并不好。

我知道这必须在C#应用程序中完成,但是这个查询已经在sql server 2008中编写了,我只想根据需要进行修改。

2 个答案:

答案 0 :(得分:1)

我在做了一些广泛的研究后才弄明白自己。但是不知道表现会好坏

SELECT LEFT(CONVERT(VARCHAR,CAST(CAST(CAST(HouseholdCoverage AS DECIMAL(10,1))/ 12 AS DECIMAL(10,1))AS money),1),
len(CONVERT(VARCHAR,CAST(CAST(CAST(HouseholdCoverage AS DECIMAL(10,1))/ 12 AS DECIMAL(10,1))AS money),1))-1) 
AS HouseholdGoodsInsuredAmount FROM Table

现在结果是我预期的小数点后1位小数,

97,917.7

答案 1 :(得分:0)

保持简单。将您的数字除以十进制数,并将答案转换为DECIMAL(10,1)

DECLARE @HouseholdCoverage BIGINT = 1175012

SELECT CAST(@HouseholdCoverage/128.0 AS DECIMAL(10,1))

DECIMAL(10,1)将确保精度(。)

后只有1个数字