当前位置: 首页 > 面试题库 >

SQL Server 2012-where子句中的Case语句

陆栋
2023-03-14
问题内容

SQL不是我的强项,但是我无法弄清楚为什么它不起作用。我只是想基于一个值运行一个不同的AND语句。具体来说,如果foo =0,我想在dateDiff函数中更改datePart

SELECT foo,
       bar,
       test
FROM table
WHERE bar = 1,
CASE WHEN foo = 0
        AND dateDiff(dd, getDate(), 2 ) < test
ELSE
        AND dateDiff(hh, getDate(), 2 ) < test
END

问题答案:

试试这个-

SELECT foo,
       bar,
       test
FROM [table]
WHERE bar = 1
    AND (
            (
                foo = 0 
                AND 
                DATEDIFF(dd, GETDATE(), 2 ) < test
            )
        OR  
            DATEDIFF(hh, GETDATE(), 2 ) < test
        )


 类似资料:
  • 我对< code>where子句中的case语句有一些问题。如果有人知道如何解决这个问题,请帮助我!谢谢你。 下面是日志中的错误: 原因:org.hibernate.hql.internal.ast.QuerySyntaxException: 意外的 AST 节点: 和靠近第 1 行, 列 589 [从 com.itengine.bettinggateway.dao.事件中选择 e.事件 tp.事

  • 问题内容: 我有以下查询: 这返回 我将如何使它工作?说参数是否为“有效”,则返回具有以下条件的记录? 问题答案: 您可以使用另一种方法:

  • 问题内容: 该问题可能特定于SQL Server。当我编写查询时,例如: 是否对表的EACH行执行Case内的Case内的函数调用fnQuarterDate(或任何子查询)? 如果我预先在类似这样的变量中获取函数(或任何子查询)的值,会怎么样呢? 我知道在MySQL中,如果WHERE子句中的IN(..)内有子查询,则对每一行都执行该子查询,我只想为SQL SERVER查找相同的子查询。 … 只需填

  • 问题内容: 我想使用in子句,但它返回错误。 我可以在where子句中使用CASE吗?或如何解决?谢谢 问题答案: 就您而言,您只需要OR 一种情况是针对 值 ,而不是条件。条件在CASE表达式之外 例如

  • 问题内容: 我正在尝试在子句中构建case / if语句。 问题在于该列包含文本和数字。我要与之比较的列是一个整数。 有没有一种方法可以检测列是否包含字符或数字,然后将其设置为0,然后将其设置为0? 这是一个伪查询可以帮助您: 问题答案: 您正在寻找IsNumeric,但它并不总是有效(+,-和。是数字),因此您需要使用GBN所描述的解决方案,即在您的varchar中添加.0e0

  • 问题内容: 我将如何在没有硬编码值的情况下编写此sql语句? 宁愿有这样的事情: 提前致谢.. 问题答案: 用您当前的方式构造SQL查询是一个糟糕的主意,因为它为各种SQL注入攻击打开了大门 。为了正确执行此操作,您必须改为使用“ 预备语句”。这也将解决您目前显然遇到的各种逃避问题。 请注意,这是一个昂贵的调用(除非您的应用程序服务器使用语句缓存和其他类似的功能)。从理论上讲,最好先准备一次语句,