7

我有以下查询:

    SELECT 
      CONVERT(DECIMAL(11,1),SUM(Column/1000*-1)) AS NAME,
    FROM
      Table

我有“/ 1000 * -1”的原因是我希望结果以千为单位显示并反转(负值为正,反之亦然),只有一位小数。

我怎样才能让正值在它们前面有一个加号 (+) 就像负值有一个破折号 (-) 一样?

4

4 回答 4

8

您可以在函数中使用分号分隔的多部分字符串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'


适用于:


更多信息:

于 2018-05-02T09:13:24.207 回答
6
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
于 2012-05-29T09:02:16.280 回答
0
SELECT 
  REPLACE(CONCAT('+', CONVERT(DECIMAL(11,1),SUM(Column/1000*-1))), '+-', '-')
FROM
  Table

不过,这种方法将显示+0.0

于 2017-08-22T22:54:27.813 回答
0

在 MYSQL 中,这有效......

CONCAT(IF(TimeZone>0,'+',''),TimeZone)

于 2019-02-14T17:29:49.910 回答