2009-05-18 4 views
1

에 약간의 변수를 할당 : SQL - 예를 들어 select 문

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

가 거기에 내가이 라인에서 호출 할 수있는 기능을 :

select @bitHaveRows = count(*) 

이 비트 0의 값 경우를 할당 행이 없거나 하나 이상의 행이 있으면 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