SQL: Cláusula IF dentro de la cláusula WHERE

¿Es posible utilizar una cláusula IF dentro de una cláusula WHERE en MS SQL?

Ejemplo:

WHERE
    IF IsNumeric(@OrderNumber) = 1
        OrderNumber = @OrderNumber
    ELSE
        OrderNumber LIKE '%' + @OrderNumber + '%'
Solución

Utilice una sentencia CASE Actualización: La sintaxis anterior (señalada por algunas personas) no funciona. Puede utilizar CASE de la siguiente manera:

WHERE OrderNumber LIKE
  CASE WHEN IsNumeric(@OrderNumber) = 1 THEN 
    @OrderNumber 
  ELSE
    '%' + @OrderNumber
  END

O puedes usar una sentencia IF como señala @N. J. Reed.

Comentarios (2)

Utilice una sentencia CASE en lugar de IF.

Comentarios (0)

Quiere que la declaración CASE

WHERE OrderNumber LIKE
CASE WHEN IsNumeric(@OrderNumber)=1 THEN @OrderNumber ELSE '%' + @OrderNumber END
Comentarios (0)