È possibile utilizzare una clausola IF all'interno di una clausola WHERE in MS SQL?
Esempio:
WHERE
IF IsNumeric(@OrderNumber) = 1
OrderNumber = @OrderNumber
ELSE
OrderNumber LIKE '%' + @OrderNumber + '%'
Utilizzare una dichiarazione CASE AGGIORNAMENTO: La sintassi precedente (come indicato da alcune persone) non funziona. Puoi usare CASE come segue:
WHERE OrderNumber LIKE
CASE WHEN IsNumeric(@OrderNumber) = 1 THEN
@OrderNumber
ELSE
'%' + @OrderNumber
END
Oppure puoi usare un'istruzione IF come fa notare @N. J. Reed.
Vuoi che l'istruzione CASE
WHERE OrderNumber LIKE
CASE WHEN IsNumeric(@OrderNumber)=1 THEN @OrderNumber ELSE '%' + @OrderNumber END