Er det muligt at bruge en IF-klausul i en WHERE-klausul i MS SQL?
Eksempel:
WHERE
IF IsNumeric(@OrderNumber) = 1
OrderNumber = @OrderNumber
ELSE
OrderNumber LIKE '%' + @OrderNumber + '%'
Brug en CASE erklæring OPDATERING: Den tidligere syntaks (som påpeget af et par personer) virker ikke. Du kan bruge CASE på følgende måde:
WHERE OrderNumber LIKE
CASE WHEN IsNumeric(@OrderNumber) = 1 THEN
@OrderNumber
ELSE
'%' + @OrderNumber
END
Eller du kan bruge en IF-erklæring, som @N. J. Reed påpeger.
Du vil have CASE-erklæringen
WHERE OrderNumber LIKE
CASE WHEN IsNumeric(@OrderNumber)=1 THEN @OrderNumber ELSE '%' + @OrderNumber END