为 JSON 选择不会根据查询进行舍入



Microsoft SQL Server中的简单SQL查询:

选择四舍五入(总和(金额),2)作为"金额" 从 其中 vid=10000174

返回正确舍入的结果,如712.72

但是同样的查询,当后缀为 'FOR JSON PATH' 时,会以科学格式返回数字,例如 [{"Amount":7.127200000000000e+002}]

我实际上需要 JSON 格式的舍入值。为什么它没有按预期工作?

通过将数字转换为 DECIMAL(18,2) 来推送 SQL 以减少小数位:

SELECT CONVERT(DECIMAL(18,2),ROUND(SUM(a.amount), 2)) AS [Amount]
FROM accvoucherlines a
WHERE a.vid=10000174
FOR JSON PATH
;

查询玩法:

SELECT CONVERT(DECIMAL(18,2),ROUND(SUM(a.amount),2)) AS [Amount]
FROM (VALUES(3.45634563),(5.1273322)) a(amount)
FOR JSON PATH
;

最新更新