Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
If值返回该值。如果记录不存在或列为null,则在Sql Server中返回0-不同的方式_Sql_Sql Server_Null - Fatal编程技术网

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行有效,
Id
具有主键约束。因此,一次只能有一行。因此,我猜Martin的查询将始终有效:)一个优势(如果需要)你会知道原因(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