web-dev-qa-db-fra.com

requête SQL si le paramètre est null tout sélectionner

J'ai la requête suivante:

SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = ?;

Maintenant, je veux ça si '?' est NULL, tous les enregistrements doivent être sélectionnés ... Comment puis-je obtenir cela en SQL?

34
Franky

Vous pouvez également utiliser les fonctions IFNULL, COALESCE, NVL, ISNULL pour vérifier la valeur NULL. Cela dépend de votre SGBDR.

MySQL :

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

ou

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

Essaye ça:

SELECT * 
FROM MY_TABLE 
WHERE @parameter IS NULL OR NAME = @parameter;
61
Mahmoud Gamal
SELECT NAME
FROM MY_TABLE
WHERE NAME LIKE CASE WHEN ? IS NOT NULL THEN ? ELSE '%' END

Cela fonctionnera parfaitement mais ne renverra que les valeurs non nulles.

0
Pushkar Saxena