it-swarm.com.de

SQL Server WENN EXISTS DANN 1 ELSE 2

Verwenden von SQL Server 2012. Ich habe eine gespeicherte Prozedur, und ein Teil davon prüft, ob ein Benutzername in einer Tabelle enthalten ist. Wenn ja, 1 zurückgeben, andernfalls 2 zurückgeben. Dies ist mein Code:

IF EXISTS (SELECT * FROM tblGLUserAccess WHERE GLUserName ='xxxxxxxx') 1 else 2

Ich erhalte jedoch weiterhin den folgenden Fehler:

Falsche Syntax nahe "1". 

Ist das überhaupt mit einem IF EXIST möglich?

Grüße,

Michael

17
Michael

Wenn Sie dies auf diese Weise tun möchten, ist dies die Syntax, nach der Sie suchen.

IF EXISTS (SELECT * FROM tblGLUserAccess WHERE GLUserName ='xxxxxxxx') 
BEGIN
   SELECT 1 
END
ELSE
BEGIN
    SELECT 2
END

Sie brauchen die BEGIN..END-Anweisungen nicht unbedingt, aber es ist wahrscheinlich am besten, sich von Anfang an daran zu gewöhnen.

39
Rich Benner

Wie wäre es mit IIF?

SELECT IIF (EXISTS (SELECT 1 FROM tblGLUserAccess WHERE GLUserName ='xxxxxxxx'), 1, 2)

Wenn Sie EXISTS verwenden, um das Vorhandensein von Zeilen zu überprüfen, verwenden Sie * nicht, sondern verwenden Sie nur 1.

6
AntDC

Welche Ausgabe benötigen Sie, select oder print oder .. usw.

verwenden Sie also den folgenden Code:

IF EXISTS (SELECT * FROM tblGLUserAccess WHERE GLUserName ='xxxxxxxx') select 1 else select 2
3

Sie können eine Variable @Result definieren, um Ihre Daten darin zu füllen 

DECLARE @Result AS INT

IF EXISTS (SELECT * FROM tblGLUserAccess WHERE GLUserName ='xxxxxxxx') 
SET @Result = 1 
else
SET @Result = 2
2
Zeina

In SQL ohne SELECT können Sie nichts ergeben. Anstelle von IF-ELSE block verwende ich lieber die CASE-Anweisung 

SELECT CASE
         WHEN EXISTS (SELECT 1
                      FROM   tblGLUserAccess
                      WHERE  GLUserName = 'xxxxxxxx') THEN 1
         ELSE 2
       END 
2