2017-05-27 8 views
0

Schreib ich die korrekte Syntax?SQL Server - Was ist die korrekte Syntax?

Pseudocode

select * from products 
if @value is not null begin where category = @value end 
+ if @value1 is not null begin where other1 = @value1 end 
+ if @value2 is not null begin where other2 = @value2 end 
+ if @value3 is not null begin where other3 = @value3 end 

Ich bin Noob. Ich möchte keine dynamische Abfrage schreiben. Wie schreibe ich die obige Abfrage?

+1

Ist das ein Tippfehler? Ist der '@ Wert' in den 'ifs'' 'value1',' @ value2', etc? – Mureinik

Antwort

2

Hier ist, wie Sie es tun, ohne dynamische Verwendung von SQL

select * 
from products 
where (@value is null or category = @value) 
     and (@value1 is null or other1 = @value1) 
     and (@value2 is null or other2 = @value2) 
     and (@value3 is null or other3 = @value3) 

Wie funktioniert es?

Nehmen Sie diese Linie @value is null or category = @value.

Die obige Bedingung prüft, ob @value null ist. Wenn dies der Fall ist, wird die gesamte Zeile/Bedingung als wahr ausgewertet. Also ignorieren wir das oder Teil dort.

Gleiches gilt für alle anderen Bedingungen.

Hoffe das macht es klar!

Verwandte Themen