SQL Server 中金额的条件浮点格式

问题描述 投票:0回答:2

我正在努力将浮点数格式化为具有条件格式的字符串。

Input : Float Number 00000.NN
Output : string 00000.NN

条件:

如果变量 decimalplace = 2,则将数字原样转换为字符串,最多保留 2 位小数,不四舍五入

如果变量 decimalplace = 0,则将数字按原样转换为最多 2 位小数的字符串。只需用 .00

修剪小数部分

例子:

if decimal place = 2
    then 123456 will 123456.00
    then 123456.00 will 123456.00
    then 123456.12 will 123456.12

if decimal place = 0
    then 123456 will 123456.00
    then 123456.00 will 123456.00
    then 123456.12 will 123456.00
sql sql-server rounding number-formatting
2个回答
1
投票

ROUND()
FORMAT()
的组合是一个可能的解决方案:

DECLARE @place int = 2;

SELECT 
   [Number],
   FORMAT(ROUND([Number], @place), '#.00') AS [FormatedNumber] 
FROM (VALUES
   (123456),
   (123456.00),
   (123456.12),
   (123456.1245)
) v ([Number])

0
投票

以下是否提供了您的预期结果?

declare @DecimalPlace tinyint = 0, @num Float = 123456.12;
select Concat(Format(@num, '#.' + Replicate('0',@DecimalPlace)), Iif(@DecimalPlace = 0, '.00',''));
© www.soinside.com 2019 - 2024. All rights reserved.