3 Stimmen

Bedingungen in der SQL SELECT-Anweisung angeben

Ich muss eine SQL-Abfrage auf der Grundlage von Bedingungen ausführen. Es gibt 2 AND-Bedingungen, die nur ausgeführt werden müssen, wenn die if-Bedingungen für sie erfüllt sind. Können wir hier die CASE-Anweisung verwenden. Wenn ja, wie? Oder gibt es irgendwelche anderen Methoden?

SELECT * FROM MyTable
WHERE col1=@val1

if condition1 here
AND col2 = @val2
end if

if condition2 here
AND col3 = @val3
end if

Kann mir jemand dabei helfen? Ich verwende Sql Server 2005.

0voto

Matthew Wood Punkte 14949

Ich gehe davon aus, dass Sie zwei verschiedene Bedingungen und col/val-Paare haben wollten, nicht das gleiche wie in Ihrem Beitrag.

Wenn "Bedingung" etwas ist, das im Kontext der Abfrage existiert (d.h. kein externer Faktor), dann können Sie etwas wie folgt tun:

SELECT * FROM MyTable
WHERE col1 = @val1
  AND (NOT condition1 OR (condition1 AND col2 = @val2))
  AND (NOT condition2 OR (condition2 AND col3 = @val3))

Edit: OK, das "conditionX AND" ist also redundant, aber ich denke, es ist eine gute Idee für Dokumentationszwecke, da es die Absicht des Konstrukts deutlich macht.

0voto

MCoelho Punkte 11

Heutzutage haben die Leute keine Ahnung von SQL... Erstaunlich...

SELECT * 
FROM MyTable
WHERE col1=@val1 
and case when condition1 then col2 = @val2 else 1=1 end 
and case when condition2 then  col3 = @val3 else 1=1 end

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X