SQL Server中的十进制文字

时间:2015-08-31 19:55:48

标签: sql-server tsql decimal

我希望@test为0时结果为0.5但似乎结果始终为INT。

DECLARE @test INT = 0
SELECT
ISNULL(NULLIF(@test, 0.0), 0.5)

结果是

enter image description here

但我想要0.5。

这可能没有CAST吗?

1 个答案:

答案 0 :(得分:5)

ISNULL& NULLIF返回第一种类型的值。在您的情况下,NULLIF()是一个INT,因此您的ISNULL()会返回INT,NULLIF也是如此。

您可以在DECLARE @test INT = 0 SELECT ISNULL(NULLIF(0.0, @test), 0.5) 调用中反转值的顺序,因为INT可以转换为REAL,并且您将获得结果:

{{1}}