SQL。WHERE子句中的IF子句

在MS SQL中,是否可以在WHERE子句中使用IF子句?

例子。

WHERE
    IF IsNumeric(@OrderNumber) = 1
        OrderNumber = @OrderNumber
    ELSE
        OrderNumber LIKE '%' + @OrderNumber + '%'
解决办法

使用CASE语句 更新:之前的语法(正如一些人指出的那样)不起作用。 你可以使用CASE,如下。

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

或者你可以像@N. J. Reed指出的那样使用IF语句。

评论(2)

使用CASE语句而不是IF。

评论(0)

你想用CASE语句

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