Cas: J'ai une procédure stockée dans laquelle j'ai obtenu toutes les informations d'une table. J'ai 2 paramètres pour définir la clause Where mais l'un de ceux-ci pourrait être 0.
Question: Comment faire un Case When
ou un If
dans ma Where
clause en fonction de la valeur de mon paramètre? Je veux appliquer la clause where uniquement si la valeur est différente de 0 si est 0, je ne veux pas le faire.
Code:
@ID_ORDER,
@ID_SUPPLIER
Select *
From Orders ord
where @ID_SUPPLIER = ord.ID_SUPPLIER
AND CASE WHEN @ID_ORDER = 0 THEN ord.ID_ORDER = @ID_ORDER END
Vous ne le faites pas. Vous utilisez simplement and
et or
:
select *
from Orders ord
where ord.ID_SUPPLIER = @ID_SUPPLIER) and
(ord.ID_ORDER = @ID_ORDER or @ID_ORDER = 0);
Notez que la logique que vous essayez est à l'envers. Cela n'applique le filtre que id_order
lorsque la valeur ne l'est pas 0
.
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots