标签: sql-server tsql decimal
我希望@test为0时结果为0.5但似乎结果始终为INT。
@test
DECLARE @test INT = 0 SELECT ISNULL(NULLIF(@test, 0.0), 0.5)
结果是
但我想要0.5。
这可能没有CAST吗?
CAST
答案 0 :(得分:5)
ISNULL& NULLIF返回第一种类型的值。在您的情况下,NULLIF()是一个INT,因此您的ISNULL()会返回INT,NULLIF也是如此。
ISNULL
NULLIF
NULLIF()
ISNULL()
您可以在DECLARE @test INT = 0 SELECT ISNULL(NULLIF(0.0, @test), 0.5) 调用中反转值的顺序,因为INT可以转换为REAL,并且您将获得结果:
DECLARE @test INT = 0 SELECT ISNULL(NULLIF(0.0, @test), 0.5)
{{1}}