我有以下查询:
SELECT
CONVERT(DECIMAL(11,1),SUM(Column/1000*-1)) AS NAME,
FROM
Table
我有“/ 1000 * -1”的原因是我希望结果以千为单位显示并反转(负值为正,反之亦然),只有一位小数。
我怎样才能让正值在它们前面有一个加号 (+) 就像负值有一个破折号 (-) 一样?
我有以下查询:
SELECT
CONVERT(DECIMAL(11,1),SUM(Column/1000*-1)) AS NAME,
FROM
Table
我有“/ 1000 * -1”的原因是我希望结果以千为单位显示并反转(负值为正,反之亦然),只有一位小数。
我怎样才能让正值在它们前面有一个加号 (+) 就像负值有一个破折号 (-) 一样?
您可以在函数中使用分号分隔的多部分字符串FORMAT
(有点像您在 Microsoft Excel 中使用自定义数字格式)。
数字格式最多可以包含三段格式代码,以分号分隔。这些代码部分按顺序定义了正数、负数和零值的格式:
<POSITIVE>;<NEGATIVE>;<ZERO>
例子:
FORMAT(@YourValue,'+0.0;-0.0')
(改编自此)
我通常在显示标志时也隐藏零+/-
,所以我使用格式化字符串:'+0;-0;'''
SELECT FORMAT(+5,'+0;-0;''') --returns:
+5
SELECT FORMAT(-5,'+0;-0;''') --returns:
-5
SELECT FORMAT(-5,'+0;-0;''') --returns:
<empty string>
要同时显示零,您可以使用格式化字符串:'+0;-0;0'
适用于:tsql、azure-sql-database、sql-server-2012、sql-server-2014、sql-server-2016
FORMAT
(Transact-SQL) FORMAT
函数)SIGN
(Transact-SQL)SELECT
case
when CONVERT(DECIMAL(11,1),SUM(Column/1000*-1)) >= 0
then concat('+', CONVERT(DECIMAL(11,1),SUM(Column/1000*-1)))
else CONVERT(DECIMAL(11,1),SUM(Column/1000*-1))
end AS NAME
FROM Table
SELECT
REPLACE(CONCAT('+', CONVERT(DECIMAL(11,1),SUM(Column/1000*-1))), '+-', '-')
FROM
Table
不过,这种方法将显示+0.0
。
在 MYSQL 中,这有效......
CONCAT(IF(TimeZone>0,'+',''),TimeZone)