SQL - Назначение битовой переменной в операторе выбора - PullRequest
1 голос
/ 19 мая 2009

Например:

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

Есть ли какие-либо функции, которые я могу вызвать в этой строке:

select @bitHaveRows = count(*)

присвоить этому биту значение 0, если строк нет, или 1, если есть одна или несколько строк?

Ответы [ 3 ]

6 голосов
/ 23 июля 2010
declare @bRowsExist
SELECT @bRowsExist = CAST(count(*) as bit)
FROM yourtable

... не уверен, что это лучший запрос, чем другие предложения

5 голосов
/ 19 мая 2009

Согласно диаграмме обращения c , существует неявное преобразование из int в бит. Но если по какой-то причине это не сработает:

CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END
1 голос
/ 19 мая 2009

Если ваша база данных поддерживает это, вы можете использовать оператор CASE:

declare @bitHaveRows
select @bitHaveRows = case when count(*) > 0 then 1 else 0 end
from yourtable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...