SQL -- 在select语句中赋值一个位变量

3

例如:

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

这一行代码中是否有我可以调用的函数:

select @bitHaveRows = count(*)

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


2
什么数据库引擎(mysql、oracle、microsoft)? - Mark Roddy
3个回答

7
declare @bRowsExist
SELECT @bRowsExist = CAST(count(*) as bit)
FROM yourtable

不确定这个查询是否比其他建议更好。


6
根据转换表,int可以隐式转换为bit。但如果由于某种原因无法进行转换:
CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END

这正是我需要的。谢谢。我原本希望隐式转换在那种情况下能够起作用,但显然不行。 - Daniel

1
如果您的数据库支持,您可以使用CASE语句:
declare @bitHaveRows
select @bitHaveRows = case when count(*) > 0 then 1 else 0 end
from yourtable

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接