如果值return的值。如果记录不存在或当列为空时,return 0 in Sql 服务器 - 不同的方式

If value return the value. If a record not exists or when column is null, return 0 in Sql Server - different ways

如果没有记录或者Column1为空,我想return0

select @var =  Column1
from myschema.mytable
where Id = @suppliedId;

select isnull(@var, 0);

如果Column1为空,上面的代码输出0。或者如果没有找到一行

虽然我试图保存一些击键但结果是,

select isnull(Column1, 0)
from myschema.mytable 
where Id = @suppliedId;

如果Column1为空或者没有行

,上面的代码输出null

知道这里出了什么问题吗?或者有没有更短的方法来编写第一个代码?

你可以做到

SELECT @var = ISNULL(MAX(Column1), 0)
FROM   myschema.mytable
WHERE  Id = @suppliedId; 

即使基础查询 returns 零行,标量聚合总是 returns 一行。

并没有真正节省击键次数,但这样的事情可能会有所帮助:-)

SELECT TOP 1 tbl.field
FROM
(
    SELECT 0 AS inx, 'no record' AS field
    --if only one row is possible, than set '1' literally
    UNION SELECT ROW_NUMBER() OVER(ORDER BY mytable.orderfield), ISNULL(mytable.Land,'is null')
    FROM mytable
    WHERE IDENTITY = @suppliedID
    ) AS tbl
ORDER BY tbl.inx DESC