Spo*_*rki 6 sql formatting number-formatting
我有以下查询:
SELECT
CONVERT(DECIMAL(11,1),SUM(Column/1000*-1)) AS NAME,
FROM
Table
Run Code Online (Sandbox Code Playgroud)
我有"/ 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
Run Code Online (Sandbox Code Playgroud)