SQL Server IF EXISTS THEN 1 ELSE 2
Использование Sql Server 2012. У меня есть хранимая процедура, и часть ее проверяет, находится ли имя пользователя в таблице. Если это так, верните 1, если нет, верните 2. Это мой код:
IF EXISTS (SELECT * FROM tblGLUserAccess WHERE GLUserName ='xxxxxxxx') 1 else 2
Однако я продолжаю получать следующую ошибку:
Неправильный синтаксис около '1'.
Возможно ли это с помощью IF EXIST?
Привет,
Майкл
Ответы
Ответ 1
Если вы хотите сделать это таким образом, то вам нужен синтаксис;
IF EXISTS (SELECT * FROM tblGLUserAccess WHERE GLUserName ='xxxxxxxx')
BEGIN
SELECT 1
END
ELSE
BEGIN
SELECT 2
END
Вам строго не нужны утверждения BEGIN..END
но, вероятно, лучше всего привыкнуть к этой привычке с самого начала.
Ответ 2
Как насчет использования IIF?
SELECT IIF (EXISTS (SELECT 1 FROM tblGLUserAccess WHERE GLUserName ='xxxxxxxx'), 1, 2)
Кроме того, если вы используете EXISTS для проверки существования строк, не используйте *, просто используйте 1. Я считаю, что это имеет наименьшую стоимость.
Ответ 3
В SQL без SELECT
вы ничего не можете добиться. Вместо блока IF-ELSE
я предпочитаю использовать инструкцию CASE
для этого
SELECT CASE
WHEN EXISTS (SELECT 1
FROM tblGLUserAccess
WHERE GLUserName = 'xxxxxxxx') THEN 1
ELSE 2
END
Ответ 4
Какой результат, который вам нужен, select
или print
или.. и так далее.
поэтому используйте следующий код:
IF EXISTS (SELECT * FROM tblGLUserAccess WHERE GLUserName ='xxxxxxxx') select 1 else select 2
Ответ 5
Вы можете определить переменную @Result
, чтобы заполнить ваши данные в ней
DECLARE @Result AS INT
IF EXISTS (SELECT * FROM tblGLUserAccess WHERE GLUserName ='xxxxxxxx')
SET @Result = 1
else
SET @Result = 2