如果值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
如果没有记录或者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