2009-05-18 9 views
1

Par exemple:SQL - Affectation d'une variable bit instruction select

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

Y a-t-il des fonctions que je peux faire appel à cette ligne:

select @bitHaveRows = count(*) 

pour attribuer ce bit une valeur de 0 si il n'y a pas de lignes, ou 1 s'il y a une ou plusieurs lignes?

+2

Quel moteur db (mysql, oracle, microsoft)? –

Répondre

5

Selon le c onversion chart, il y a une conversion implicite de int en bit. Mais si pour une raison qui ne fonctionne pas:

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

C'est ce dont j'avais besoin. Merci. J'espérais que la conversion implicite fonctionnerait dans ce contexte mais apparemment pas. – Daniel

1

Si votre base de données prend en charge, vous pouvez utiliser une instruction 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 

... pas sûr si c'est un meilleur requête que les autres suggestions

Questions connexes