J'ai étudié ce scénario depuis quelques heures maintenant, mais je n'arrive pas à trouver quelque chose qui l'adresse directement.SQL Server 2005 - Clause WHERE - Utiliser IF ou CASE ou BOOLEAN?
J'ai beaucoup de paramètres optionnels passés dans un proc stocké. Je veux renvoyer un jeu d'enregistrements qui est filtré par aucun, un ou plusieurs params facultatifs passés dans le proc stocké. J'essaye de produire une seule requête pour faire ceci.
Voici mon code pseudo (SQL Server 2005):
declare @a varchar(10); set @a = null;
declare @b varchar(10); set @b = 'comm%';
select * from x
where (if @a is not null then col1 like @a)
and (if @b is not null then col2 like @b)
Comme vous pouvez le voir, je veux seulement filtrer col1 si mon param (@a) dispose de données. De même, je veux seulement filtrer sur col2 si mon param (@b) a des données. Si @a et @b sont tous les deux NULL, la requête doit retourner toutes les lignes.
J'ai trouvé plusieurs threads qui se rapprochent de ce que je veux, mais aucun d'entre eux n'emploie la clause LIKE.
Cela a résolu mon problème. Merci beaucoup :) – Mark
@Mark. Heureux de vous aider! –