Est-il possible d'utiliser une clause IF dans une clause WHERE en MS SQL ?
Exemple :
WHERE
IF IsNumeric(@OrderNumber) = 1
OrderNumber = @OrderNumber
ELSE
OrderNumber LIKE '%' + @OrderNumber + '%'
Utilisez une instruction [CASE][1]. MISE À JOUR: La syntaxe précédente (comme l'ont fait remarquer quelques personnes) ne fonctionne pas. Vous pouvez utiliser CASE comme suit :
WHERE OrderNumber LIKE
CASE WHEN IsNumeric(@OrderNumber) = 1 THEN
@OrderNumber
ELSE
'%' + @OrderNumber
END
Ou vous pouvez utiliser une instruction IF comme @[N. J. Reed][2] l'indique.
[1] : http://msdn.microsoft.com/en-us/library/ms181765.aspx [2] : https://stackoverflow.com/questions/87821/sql-if-clause-within-where-clause#87992
Utilisez une instruction [CASE][1] au lieu de IF.
Vous voulez l'instruction CASE
WHERE OrderNumber LIKE
CASE WHEN IsNumeric(@OrderNumber)=1 THEN @OrderNumber ELSE '%' + @OrderNumber END