SQL 服务器中的十进制文字

Decimal literals in SQL Server

我希望当 @test 为 0 时结果为 0.5。但看起来结果总是 INT。

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

结果是

但是我想要0.5。

没有 CAST 可以做到吗?

两者都是ISNULL & NULLIFreturn第一种类型的值。在你的例子中,@test 是一个 INT,所以你的 NULLIF() return 是一个 INT,ISNULL().

也是

您可以在 NULLIF 调用中反转值的顺序,因为 INT 可以转换为 REAL,您将得到结果:

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