我在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中编写了,我只想根据需要进行修改。
答案 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个数字