2016-10-28 4 views
0
Declare @param char(1) 
SET @param = 'A' 

@param NULL-Wert holen kannSQL param in WHERE-Klausel

SELECT x, y FROM myTbl 
WHERE y = @param 

'A', 'B' oder 'C' sein, wenn @param = 'A' oder 'B' y dann = @param funktioniert gut wenn @param = 'C' dann möchte ich wo die Zeilen holen, wo y Null

Ich könnte dies mit dynamischen SQL erreichen, aber kann nicht herausfinden, wie es ohne dynamische SQL tun . Irgendwelche Gedanken?

+0

, die für diesen RDBMS ist? Bitte fügen Sie ein Tag hinzu, um anzugeben, ob Sie 'mysql',' postgresql', 'sql-server',' oracle' oder 'db2' verwenden - oder etwas ganz anderes. –

Antwort

1

Verwenden Grund Boolesche Logik:

SELECT x, y 
FROM myTbl 
WHERE y = @param or (@param = 'C' and y is null); 

Wenn Sie wirklich mehr explizit sein wollen:

SELECT x, y 
FROM myTbl 
WHERE (@param <> 'C' AND y = @param) OR 
     (@param = 'C' AND y IS NULL); 
+0

Danke! es funktionierte – SilverFish