数字格式为负十进制数给出 + 号
Number format is giving + sign for negative decimal number
我正在尝试用 +/- 符号格式化一个小数点后一位数字的十进制数。我正在使用以下查询
select FORMAT(-0.034, '+0.0;-0.0')
我在输出中得到 +0.0 而不是 -0.0
在类似情况下,可以选择使用表达式(变量)作为 format
参数的值:
SELECT FORMAT(
[Number],
CONCAT(
'+0.0;-0.0;',
CASE
WHEN [Number] < 0 THEN '-0.0'
WHEN [Number] > 0 THEN '+0.0'
ELSE ' 0.0'
END
)
) AS [Result]
FROM (VALUES
(-0.034),
(0.034),
(0),
(0.153),
(-0.153)
) v ([Number])
结果:
Result
------
-0.0
+0.0
0.0
+0.2
-0.2
@Zhorov 的解决方案存在一个小问题,因为我得到了双负号,例如输入数字为“-0.153”的“--0.2”。我尝试使用其他格式化选项但无法解决此问题,因此我使用@Zhorov 建议的 CASE 表达式创建了另一个解决方案。
SELECT [Number],
case
when [Number] < 0 then '-' + FORMAT([Number],'0.0;0.0')
when [Number] > 0 then '+' + FORMAT([Number],'0.0;0.0')
else '0.0' end
as [Correct-Output],
FORMAT(
[Number],
CASE
WHEN [Number] < 0 THEN '-0.0'
WHEN [Number] > 0 THEN '+0.0'
ELSE ' 0.0'
END
) AS [Result1],
FORMAT(
[Number],
CASE
WHEN [Number] < 0 THEN '+0.0;-0.0'
WHEN [Number] > 0 THEN '+0.0;+0.0'
ELSE ' 0.0'
END
) AS [Result2]
FROM (VALUES
(-0.034),
(0.034),
(0),
(0.153),
(-0.153)
) v ([Number])
输出
我正在尝试用 +/- 符号格式化一个小数点后一位数字的十进制数。我正在使用以下查询
select FORMAT(-0.034, '+0.0;-0.0')
我在输出中得到 +0.0 而不是 -0.0
在类似情况下,可以选择使用表达式(变量)作为 format
参数的值:
SELECT FORMAT(
[Number],
CONCAT(
'+0.0;-0.0;',
CASE
WHEN [Number] < 0 THEN '-0.0'
WHEN [Number] > 0 THEN '+0.0'
ELSE ' 0.0'
END
)
) AS [Result]
FROM (VALUES
(-0.034),
(0.034),
(0),
(0.153),
(-0.153)
) v ([Number])
结果:
Result
------
-0.0
+0.0
0.0
+0.2
-0.2
@Zhorov 的解决方案存在一个小问题,因为我得到了双负号,例如输入数字为“-0.153”的“--0.2”。我尝试使用其他格式化选项但无法解决此问题,因此我使用@Zhorov 建议的 CASE 表达式创建了另一个解决方案。
SELECT [Number],
case
when [Number] < 0 then '-' + FORMAT([Number],'0.0;0.0')
when [Number] > 0 then '+' + FORMAT([Number],'0.0;0.0')
else '0.0' end
as [Correct-Output],
FORMAT(
[Number],
CASE
WHEN [Number] < 0 THEN '-0.0'
WHEN [Number] > 0 THEN '+0.0'
ELSE ' 0.0'
END
) AS [Result1],
FORMAT(
[Number],
CASE
WHEN [Number] < 0 THEN '+0.0;-0.0'
WHEN [Number] > 0 THEN '+0.0;+0.0'
ELSE ' 0.0'
END
) AS [Result2]
FROM (VALUES
(-0.034),
(0.034),
(0),
(0.153),
(-0.153)
) v ([Number])
输出