Use CASE:
WHERE
CASE IsNumeric(@OrderNumber)
WHEN 1 THEN OrderNumber = @OrderNumber
ELSE BillId= @OrderNumber
END
WHERE
CASE
WHEN IsNumeric(@OrderNumber) = 1 THEN OrderNumber = @OrderNumber
ELSE BillId= @OrderNumber
END
Hope that helps ^_^
Andy
UPDATE: Actually, as pointed out, this won't work. The case can only return a value, not be used as a logical condition.
It can be used in this case as so:
WHERE
CASE
WHEN IsNumeric(@OrderNumber) = 1 THEN OrderNumber
ELSE BillId
END = @OrderNumber
or, just as valid would be to use an OR clause:
WHERE
( IsNumeric(@OrderNumber) = 1 AND OrderNumber = @OrderNumber)
OR
( IsNumeric(@OrderNumber) = 0 AND BillId= @OrderNumber)