将数字转换为两位小数(10,2)



我尝试了很多方法,但都能得到准确的答案。

SELECT 
        CASE 
        WHEN ISNUMERIC('9900') != 1 THEN 0 
        ELSE  CAST('9900' AS decimal(10,2))/100 
        END
       AS BVN 

在这种情况下,输出是99.000000,但是我想要输出99.00,所以我尝试了这个:

SELECT 
        CASE 
        WHEN ISNUMERIC('9900') != 1 THEN 0 
        ELSE  REPLACE(CAST(CAST('9900' AS decimal(10,2))/100 AS VARCHAR(20)),'0000','')
        END
       AS BVN 

现在我得到错误:

Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value '99.00' to data type int.

我很困惑为什么我会出错,因为我已经将结果转换为varchar,然后使用REPLACE函数。以及我如何才能得到我想要的输出。

您必须将结果强制转换为除法后的两位小数。请找到以下解决方案。

SELECT CAST(CAST('9900' AS decimal(10,2))/100 AS decimal(10,2)) AS BVN 

最新更新