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

如何评估WHERE子句中的输入

党博超
2023-03-14
问题内容

我正在输入一个变量,基本上我想做类似的事情

SELECT * FROM PEOPLE
WHERE 
     IF @INPUT = 1
         ITEMID = 16 OR ITEMID = 13
     ELSE IF @INPUT = 2
         ITEMID = 11 OR ITEMID = 14
     ELSE
         ITEMID = 0

有没有办法做到这一点,如果这是错误的,请原谅,但我想将我的问题描述得尽可能容易理解。

我像这样尝试过CASE

WHERE 
    CASE @INPUT
       WHEN 1 THEN ITEMID = 16 OR ITEMID = 13
       WHEN 2 THEN ITEMID = 11 OR ITEMID = 14
       ELSE ITEMID = 0
    END

但是所有这些方法都会引发错误,如果可以的话,我将提供一个很好的建议,一种更有效的方式来实现此目的。

感谢您的帮助。


问题答案:
 WHERE (@INPUT = 1 AND ITEMID IN (13,16)) 
    OR (@INPUT = 2 AND ITEMID IN (11,14))
    OR (@INPUT NOT IN (1,2) AND ITEMID = 0)


 类似资料:
  • 问题内容: 是否在SQL WHERE子句中对布尔表达式进行短路求值 ? 例如: 如果 @key IS NULL的 计算结果为true,则 @key不是NOT AND @key = t.Key的 计算结果吗? 如果否,为什么不呢? 如果是,是否可以保证?它是ANSI SQL的一部分还是特定于数据库的? 如果是特定于数据库的SqlServer?甲骨文?MySQL的? 问题答案: ANSI SQL草稿2

  • 本章提供了有关如何使用JDBC应用程序从表中选择记录的示例。 这将在从表中选择记录时使用WHERE子句添加其他条件。 在执行以下示例之前,请确保您具备以下示例 - 要执行以下示例,您可以使用实际用户名和密码替换用户名和密码。 您的MySQL或您正在使用的任何数据库已启动并正在运行。 所需的步骤 (Required Steps) 使用JDBC应用程序创建新数据库需要以下步骤 - Import the

  • 问题内容: 我有一个这样的表“ bla”: 如果我做SQL查询 我只得到ID为2的记录。我没有ID为3的记录,其中fk为空。我以为NULL!=4。看来这是错误的。 为什么会这样呢? 问题答案: 不等于任何东西。您需要明确接受null: 有关处理的更多信息,请参见使用NULL。

  • 问题内容: 如果列匹配,是否有很好的方法在SQL中表示选择特定的行,否则选择更通用的行?就像是: 我只希望它返回一个特定的记录(如果存在),否则,如果找不到特定的列匹配项,则返回通用的“ ALL”记录。看起来COALESCE与我正在寻找的相似,但我不知道在语法上如何工作。 问题答案: @Blorgbeard答案(使用前1个和排序依据)可能是最好的方法,但只是有所不同,您还可以使用子查询,但不存在:

  • 问题内容: 我的网页上有一个绑定到gridview的entitydatasource。 在后面的代码中,我可以使用entitydatasource的WHERE语句过滤并向网格视图显示所需的内容。我的where语句之一使用大的OR语句进行过滤,但是逻辑上比较多的IN语句不起作用。 例如,我有雇员1-9,并且我想选择雇员1、4和7。在SQL中,我可以通过以下两种方式: 1。 2。 这两个语句在SQL中

  • 我是JPA的新手。使用where子句构建select查询。我需要从表Contacts中选择所有等于字符串名称值的ContactName。 以下是执行我的项目时出现的错误:java.lang.IllegalArgumentException:无法根据在org.hibernate.jpa.criteria.path.abstractPathimpl.unknownatAttribute(abstrac