Подтвердить что ты не робот

Необходимость BOOLEAN Результат из SQL EXISTS Statement без использования предложения WHERE

Есть ли способ в простом запросе вернуть логическое значение с помощью инструкции SQL EXISTS без использования предложения WHERE?

Во всех примерах электронной документации по SQL Server 2008 2008 R2 показано другое предложение WHERE и две таблицы. Примеры веб-сайтов показывают процедуру WHERE или IF-THEN-ELSE в процедуре.

Я надеялся сделать следующее на одном столе:

EXISTS
(SELECT  cx.id
 FROM fdd.admissions_view as cx  
 WHERE cx.id=1111 and cx.campus='MEXI') 

Оператор SELECT отлично работает и возвращает идентификатор. Я просто хочу добавить EXISTS, чтобы вернуть BOOLEAN, но приведенный выше синтаксис недействителен.

Могу ли я сделать что-то вроде этого? Если да, то что мне не хватает по синтаксису? Если нет, то какой другой метод может работать?

Просьба сообщить. Благодарю.

4b9b3361

Ответ 1

Не совсем уверен, что вы подразумеваете под "возвратом", но вот некоторые идеи.

DECLARE @return BIT = 0;
IF EXISTS( SELECT  cx.id
    FROM fdd.admissions_view as cx  
    WHERE cx.id=1111 and cx.campus='MEXI' ) SET @return = 1;

Или:

IF EXISTS( SELECT  cx.id
    FROM fdd.admissions_view as cx  
    WHERE cx.id=1111 and cx.campus='MEXI' ) SELECT 1 AS returnValue

Ответ 2

Как насчет чего-то вроде

select case when count(cx.id) > 0 then 1 else 0 end 
 FROM fdd.admissions_view as cx  
 WHERE cx.id=1111 and cx.campus='MEXI'

?

Ответ 4

Проблема заключается в том, что EXISTS является допустимым синтаксисом в некоторых конструкциях грамматики. Мне не известны формальные правила (это означает, что я должен идти RTFM: -?), Но EXISTS можно обернуть в case, который будет работать при использовании в качестве выражения:

set @r = case when exists (...) then 1 else 0 end

return case when exists (...) then 1 else 0 end

например.

return case when exists (SELECT 1 -- because it as good as anything else
    FROM fdd.admissions_view as cx  
    WHERE cx.id=1111 and cx.campus='MEXI')
  then 1 else 0 end