2009-05-18 84 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 

...不知道它是否是一個更好的查詢比其他建議