web-dev-qa-db-de.com

sQL-Abfrage, wenn der Parameter NULL ist, Alle auswählen

Ich habe folgende Frage:

SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = ?;

Jetzt möchte ich das, wenn '?' ist NULL, alle Datensätze müssen ausgewählt werden ... Wie kann ich dies in SQL erreichen? Danke

34
Franky

Sie können auch die Funktionen IFNULL, COALESCE, NVL, ISNULL verwenden, um den Nullwert zu überprüfen. Das hängt von Ihrem RDBMS ab.

MySQL :

SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = IFNULL(?,NAME);

oder

SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = COALESCE(?,NAME);

Oracle :

SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = NVL(?,NAME);

SQL Server /SYBASE:

SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = ISNULL(?,NAME);
27
Parado

Versuche dies:

SELECT * 
FROM MY_TABLE 
WHERE @parameter IS NULL OR NAME = @parameter;
61
Mahmoud Gamal

Die Foll. Die Abfrage behandelt den Fall, dass der Name (Tabellenspaltenwert) auch NULL sein kann:

SELECT NAME, SURNAME FROM MY_TABLE WHERE COALESCE(NAME,'') = COALESCE(?,NAME,'');
0
variable
SELECT NAME
FROM MY_TABLE
WHERE NAME LIKE CASE WHEN ? IS NOT NULL THEN ? ELSE '%' END

Dies funktioniert einwandfrei, aber es werden nur die Werte zurückgegeben, die nicht Null sind.

0
Pushkar Saxena