在SQL中显示带加号(+;)的正结果

在SQL中显示带加号(+;)的正结果,sql,formatting,number-formatting,tsql,azure-sql-database,sql-server-2012,sql-server-2014,sql-server-2016,.net,Sql,Formatting,Number Formatting,Tsql,Azure Sql Database,Sql Server 2012,Sql Server 2014,Sql Server 2016,.net,我有以下疑问: SELECT CONVERT(DECIMAL(11,1),SUM(Column/1000*-1)) AS NAME, FROM Table 我之所以选择“/1000*-1”,是因为我希望结果以千为单位显示,并用小数点后一位反转(负值为正值,反之亦然) 怎样才能使正值前面有加号(+),就像负值前面有破折号(-)一样 不过,这种方法将显示+0.0。您可以使用分号分隔的多部分字符串和0时,然后“+”将CONVERT(十进制(11,1),SUM

我有以下疑问:

    SELECT 
      CONVERT(DECIMAL(11,1),SUM(Column/1000*-1)) AS NAME,
    FROM
      Table
我之所以选择“/1000*-1”,是因为我希望结果以千为单位显示,并用小数点后一位反转(负值为正值,反之亦然)

怎样才能使正值前面有加号(+),就像负值前面有破折号(-)一样


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

您可以使用分号分隔的多部分字符串和
函数(类似于Microsoft Excel中的自定义数字格式)

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


示例:

格式(@YourValue,+0.0;-0.0')
(改编自)


我通常在显示
+/-
符号时也隐藏零,因此我使用格式化字符串:
'+0-0;'''

选择格式(+5,+0;-0;'')--返回:
+5

选择格式(-5,+0;-0;'')--返回:
-5

选择格式(-5,+0;-0;'')--返回:


要同时显示零,可以使用格式化字符串:
'+0-0;0'


适用于:、


更多信息:
  • Microsoft文档:
  • Microsoft文档:
    (Doc用于但也适用于
    格式
    功能)
  • Microsoft文档:

在MYSQL中,这是有效的


CONCAT(如果(时区>0,“+”,”),时区)

应该处理输出格式的是表示层。SQL查询只向您提供数据。顺便说一句,您还可以像这样反转结果的符号:
-Column
(而不是
Column
),或者像这样:
Column/-1000
或者像这样:
-SUM(Column/1000)
或者像这样:
-CONVERT(十进制(11,1),SUM(Column/1000))
。您可能应该将
=0
替换为
>0
。(你不想在输出中使用
+0.0
,是吗?)他也不想使用-0.0:完成的另一件事是,你似乎暗示一个数字将隐式转换为字符串,而不是相反。因为我们目前对OP的数据库系统一无所知,所以我们不应该依赖于我们曾经使用过的隐式转换规则。@user1423223:然后尝试将
'+'+cast(转换(十进制(11,1),SUM(Column/1000*-1))转换为char(50))
而不是
concat(+',concat(十进制(11,1),SUM(Column/1000*-1))
谢谢大家,成功了!我使用了:case当CONVERT(十进制(11,1),SUM(Column/1000*-1))>0时,然后“+”将CONVERT(十进制(11,1),SUM(Column/1000*-1))转换为char(50)),否则将CONVERT(十进制(11,1),SUM(Column/1000*-1))转换为char(50))结束为Name,
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