在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