繁体   English   中英

如果值返回值。如果记录不存在或列为null,则在Sql Server中以不同的方式返回0

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

如果没有记录或者Column1为null,我想返回0

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

select isnull(@var, 0);

如果Column1为null,则上面的代码输出0 或者如果找不到行

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

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

如果Column1为null或没有行,则上面的代码输出null

任何想法在这里有什么不对? 或者有没有更短的方式来编写第一个代码?

你可以做

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

即使基础查询返回零行,标量聚合也始终返回单行。

不是真的保存击键,但这样的事情可以帮助:-)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM