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?
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);
Essaye ça:
SELECT *
FROM MY_TABLE
WHERE @parameter IS NULL OR NAME = @parameter;
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.