如何应用isnull变量?

时间:2016-07-26 07:44:04

标签: sql sql-server isnull

我有一个名为sample with table的表:

Id, Name, Dept, active

查询:

select Id 
from Sample 
where Dept = @Dept and active = 1

我想通过传递活跃的deptment名称从示例表名中获取id。可能会出现我获得2条记录的情况。两个部门可能是活跃的。这就是我占据前1名的原因。有些时候可能没有任何记录。

这就是我在存储过程中使用这个的原因:

declare @TempId int      

set top 1 @TempId  = Id 
from Sample 
where Dept = @Dept and active = 1

if(@TempId is null)
begin
    @TempId = 0
end

我可以在上面的选择中使用isnull而不是之后适合我的条件吗?

3 个答案:

答案 0 :(得分:2)

没有。首先,它必须是select,而不是set。 如果select没有返回任何行,则不会更改@TempId。看到这个简单的例子

declare @TempId int = 0;
select @TempId = null where 1=2;
select @TempId;

答案 1 :(得分:0)

我会写下面的代码:

DECLARE @TempId int =
    COALESCE((SELECT TOP 1 Id FROM [Sample] WHERE Dept = @dept AND Active=1), 0)

如果没有返回任何行,则使用NULL合并功能。

答案 2 :(得分:-1)

在选择记录时,检查NULL值,并选择NOT NULL记录。

声明@TempId int
    从样本中选择前1个@TempId = Id,其中Dept = @Dept并且active = 1且Id不为空