2009-05-18 7 views
1

例えば:SQL - SELECT文のビット変数の割り当て

select @bitHaveRows = count(*) 

このビットに0の値を代入する場合:

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

は、私はこのラインで呼び出すことができるすべての機能があります行がないか、1つ以上の行がある場合は1ですか?

+2

どのようなdbエンジン(mysql、oracle、microsoft)ですか? –

答えて

5

c onversion chartによれば、intからbitへの暗黙の変換があります。しかし、何らかの理由でそれが動作しない場合:それが良いかどうかわからない...

declare @bitHaveRows 
select @bitHaveRows = case when count(*) > 0 then 1 else 0 end 
from yourtable 
+0

それは私が必要なものです。ありがとう。私は暗黙の変換がその文脈ではうまくいくが、明らかにそうではないことを期待していた。 – Daniel

1

場合は、CASE文を使用することができますクエリは他の提案よりも

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

:データベースがそれをサポートしています

CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END 
関連する問題