在SQL中使用加号(+)显示正结果

时间:2012-05-29 08:57:28

标签: sql formatting number-formatting

我有以下查询:

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

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

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

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

您可以将以分号分隔的多部分字符串与 FORMAT 函数一起使用(有点像在Microsoft Excel中使用自定义数字格式)。

  

数字格式最多可包含三个部分格式代码,由分号分隔。这些代码部分按顺序定义正数,负数和零值的格式:

     

<POSITIVE>;<NEGATIVE>;<ZERO>

     

示例:

     

FORMAT(@YourValue,'+0.0;-0.0')

     

(改编自this

我在展示+/-标志时通常还会隐藏零,所以我使用格式化字符串: '+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'

适用于:

更多信息:

答案 2 :(得分:0)

SELECT 
  REPLACE(CONCAT('+', CONVERT(DECIMAL(11,1),SUM(Column/1000*-1))), '+-', '-')
FROM
  Table

但这种方法会显示+0.0

答案 3 :(得分:0)

在MYSQL中,这可行...

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