Chr*_*ris 1 t-sql sql-server decimal
我希望当结果@test为0 时结果为0.5 但看起来,结果始终是INT.
DECLARE @test INT = 0
SELECT
ISNULL(NULLIF(@test, 0.0), 0.5)
Run Code Online (Sandbox Code Playgroud)
结果是
但我想要0.5.
这可能没有CAST吗?
这两个ISNULL与NULLIF返回第一个类型的值.在你的情况下,@test是一个INT,所以你NULLIF()返回一个INT,所以ISNULL().
您可以在NULLIF调用中反转值的顺序,因为INT可以转换为REAL,并且您将获得结果:
DECLARE @test INT = 0
SELECT
ISNULL(NULLIF(0.0, @test), 0.5)
Run Code Online (Sandbox Code Playgroud)