Forums Neueste Beiträge
 

Variable in WHERE -Bedingung

22/12/2008 - 20:54 von ludwig koenigbauer | Report spam
Hallo,
ich habe mir die Express-Edition 2008 heruntergeladen und versuch mich
gerade an SQL;

wie kann ich die Variable deklarieren und zuweisen,dass sie die
WHERE-Bedingung richtig widergibt.
Zunàchst der SQL-Code(normal):
SELECT kz,Kost
FROM Testing
WHERE reg = 'S' OR reg = 'N'

und der SQL-Code mit der versuchten Deklarierung:
DECLARE @Reg nchar(2)
SET @Reg = 'S' OR + @Reg = 'N'????
SELECT kz,Kost
FROM Testing
WHERE reg = @Reg

Ich habe mich schon vergeblich versucht,kann aber keine Lösung finden.
oder geht das so gar nicht.
Kann mir jemand einen Tipp geben?
Danke.
Viele Grüße
Ludwig
 

Lesen sie die antworten

#1 Elmar Boye
22/12/2008 - 23:27 | Warnen spam
Hallo Ludwig,

"ludwig koenigbauer" schrieb ...
ich habe mir die Express-Edition 2008 heruntergeladen und versuch mich gerade an SQL;

wie kann ich die Variable deklarieren und zuweisen,dass sie die WHERE-Bedingung richtig widergibt.
Zunàchst der SQL-Code(normal):
SELECT kz,Kost
FROM Testing
WHERE reg = 'S' OR reg = 'N'

und der SQL-Code mit der versuchten Deklarierung:
DECLARE @Reg nchar(2)
SET @Reg = 'S' OR + @Reg = 'N'????
SELECT kz,Kost
FROM Testing
WHERE reg = @Reg



Variablen können keine Ausdrücke aufnehmen,
das geht in VB.NET oder C# ebensowenig wie in SQL.

Eine Lösung wàre

DECLARE @Reg1 varchar(1)
DECLARE @Reg2 varchar(1)

SET @Reg1 = 'S'
SET @Reg2 = 'N'
SELECT ...
FROM Testing
WHERE Reg = @Reg1 OR Reg = @Reg2;

oder mit IN Klausel:
WHERE Reg IN (@Reg1, Reg2);

Im Code (hier mal C#) wàre das
selectCommand.CommandText = "SELECT ... FROM Testing "
+ "WHERE Reg = @Reg1 OR Reg = Reg2;"

selectCommand.Parameters.Add("@Reg1", SqlDbType.VarChar, 1);
selectCommand.Parameters.Add("@Reg2", SqlDbType.VarChar, 1);

selectCommand.Parameters["@Reg1"].Value = "S";
selectCommand.Parameters["@Reg2"].Value = "N";

In der Konsequenz bedeutet es, dass Du für jede Bedingung
eine weitere Variable (bzw. SqlParmeter) anlegen mußt.
Und die SQL Anweisung entsprechend anpassen.

Gruß Elmar

Ähnliche fragen