2009-05-18 85 views
1

例如:SQL - 分配一个位变量在SELECT语句

declare @bitHaveRows bit 
select @bitHaveRows = count(*) 
    from table 
    where (predicate) 

有没有我可以在这行调用任何函数:

select @bitHaveRows = count(*) 

此位如果指定的值为0没有行,或者如果有一个或多个行,则为1?

+2

什么数据库引擎(mysql,oracle,microsoft)? – 2009-05-18 21:12:57

回答

5

根据c onversion chart,存在从int到bit的隐式转换。但是,如果由于某种原因不工作:

CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END 
+0

这就是我所需要的。谢谢。我希望隐式转换可以在这种情况下工作,但显然不是。 – Daniel 2009-05-18 21:16:45

1

如果你的数据库支持的话,你可以使用一个CASE语句:

declare @bitHaveRows 
select @bitHaveRows = case when count(*) > 0 then 1 else 0 end 
from yourtable 
6
declare @bRowsExist 
SELECT @bRowsExist = CAST(count(*) as bit) 
FROM yourtable 

...不知道它是否是一个更好的查询比其他建议