我尝试了很多方法,但都能得到准确的答案。
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