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

例子:

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

推荐答案

Use a CASE statement
UPDATE: The previous syntax (as pointed out by a few people) doesn't work. You can use CASE as follows:

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

或者你也可以使用IF语句,比如@N. J. Reed points out.

Sql相关问答推荐

SQL—如何在搜索的元素之后和之前获取元素?

我如何计算字母a出现的字符串的次数?

连接特定行号

如何计算一个用户S的日常连胜?

将日期时间转换为日期格式

在一个子查询中签入ID';S,如果未返回,则签入另一个子查询

如何从Spark SQL的JSON列中提取动态数量的键值对

如何找到一个组合的两个列,这是不是在其他表在ORACLE SQL?

将JSON文件导入Postgres 16数据库时出错(22P04上次预期列之后的额外数据)

SQL查询正在工作,但返回空结果

在 PostgreSQL 中生成时间序列查询

删除行而不使数据库超载

根据时间值提取记录

JSON_VALUE 不适用于提取的 json 中的嵌套路径

如何用SQL组合客户拥有的产品

在 SQL Server 中查找重复项

SQL 如何根据当前事件和下一个事件确定操作的持续时间?

在presto sql中解析带有区域的时间格式

在 MS Access VBA 中,如何测量显示查询的时间?

连续几天购买的客户