JSON 的选择未按照查询进行舍入

Pra*_*pta 5 sql-server json

Microsoft SQL Server 中的简单 SQL 查询:

SELECT ROUND(SUM(金额), 2) AS '金额' FROM accvoucherlines WHERE vid=10000174

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

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

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

Vit*_*sov 3

通过将数字转换为 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
;
Run Code Online (Sandbox Code Playgroud)

要玩的查询:

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