SQL Server中的十进制文字

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吗?

Ami*_*mit 5

这两个ISNULLNULLIF返回第一个类型的值.在你的情况下,@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)