declare @bitHaveRows bit
select @bitHaveRows = count(*)
from table
where (predicate)
有没有我可以在这行调用任何函数:
select @bitHaveRows = count(*)
此位如果指定的值为0没有行,或者如果有一个或多个行,则为1?
declare @bitHaveRows bit
select @bitHaveRows = count(*)
from table
where (predicate)
有没有我可以在这行调用任何函数:
select @bitHaveRows = count(*)
此位如果指定的值为0没有行,或者如果有一个或多个行,则为1?
根据c onversion chart,存在从int到bit的隐式转换。但是,如果由于某种原因不工作:
CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END
这就是我所需要的。谢谢。我希望隐式转换可以在这种情况下工作,但显然不是。 – Daniel 2009-05-18 21:16:45
如果你的数据库支持的话,你可以使用一个CASE语句:
declare @bitHaveRows
select @bitHaveRows = case when count(*) > 0 then 1 else 0 end
from yourtable
declare @bRowsExist
SELECT @bRowsExist = CAST(count(*) as bit)
FROM yourtable
...不知道它是否是一个更好的查询比其他建议
什么数据库引擎(mysql,oracle,microsoft)? – 2009-05-18 21:12:57