If值返回该值。如果记录不存在或列为null,则在Sql Server中返回0-不同的方式
如果没有记录或If值返回该值。如果记录不存在或列为null,则在Sql Server中返回0-不同的方式,sql,sql-server,null,Sql,Sql Server,Null,如果没有记录或列1为空,我想返回0 如果列1为空,则上述代码输出0。或者如果找不到行 虽然我试图保存一些击键,但结果 select isnull(Column1, 0) from myschema.mytable where Id = @suppliedId; 如果Column1为空或没有行时,上述代码输出null 你知道这里怎么了吗?或者有没有更简短的方法来编写第一个代码?您可以这样做 SELECT @var = ISNULL(MAX(Column1), 0) FROM myschem
列1
为空,我想返回0
如果列1
为空,则上述代码输出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;
即使基础查询返回零行,标量聚合也始终返回一行。实际上并没有保存键击,但类似的内容可能会有所帮助:-)
coalesce(column1,0),ANSI SQL方式。@jarlh:column1为空时,
coalesce
不返回0。刚刚试过:(你确定有ID=@suppliedID的记录吗?@roryap:当然没有记录。即使没有找到记录,我也要返回0而不是null。这是你的问题。如果没有记录,那么就不会有记录显示你的ISNULL
函数的结果。很好的一行代码。谢谢,但是如果你有多条记录呢结果集中的行?这将是不正确的,您将在所有行中获得相同的结果。它仅适用于结果集不正确的情况empty@Zsuzsa-在这种情况下,原始查询是不确定的。如何将多个值分配给标量变量?只有在Id
但是该值可能存在,也可能不存在。没错,你是对的。而且原始查询只对1行有效,具有主键约束。因此,一次只能有一行。因此,我猜Martin的查询将始终有效:)一个优势(如果需要)你会知道原因(null或“无记录”)…请投赞成票Id
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