SQL:WHERE 子句中的 IF 子句

标签 sql sql-server tsql

是否可以在 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

或者您可以使用 IF 语句,例如 @ N. J. Reed指出。

关于SQL:WHERE 子句中的 IF 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/87821/

相关文章:

mysql - 在 MySQL 中存储配置的最佳方式

mysql - 仅显示下一条记录中具有相同值的第一列

sql - 选择具有特定类型关联记录的记录

SQL:选择varchar的平均值

sql - 如何在sql server中设置两个具有相同值的局部变量?

database - 用户搜索关键字与标签的匹配

mysql - 如何在 SQL 中迭代 CASE 语句?

sql - 将两个 SQL 查询结果合并为一个结果

tsql - 在删除触发器中更新表以删除多行

c# - 将单个值从存储过程返回到 .Net : OUTPUT parameter or ExecuteScalar? 有什么更好的