当前位置: 首页 > 知识库问答 >
问题:

准备的语句改变where子句的数目

吴浩皛
2023-03-14

我需要实现一个方法来查询不同数量的条件。我不想每次都做一个新的准备好的语句,因为这就是为什么我首先使用准备好的语句。基本上我有三个条件。

String sql = "select * from t where attr1 = ? and attr2 = ? and attr3 = ?;";
String sql1 = "select * from t where attr1 = ? and attr3 = ?;";
String sql2 = "select * from t where attr2 = ? and attr3 = ?;";
String sql3 = "select * from t where attr2 = ?;"; 
etc..
select * from t where attr1 = value1 and attr2 = attr2 and attr3 = value3

现在我不知道如何用准备好的语句进行这样的查询。因为我没有办法设置attr2=attr2。有什么建议可以实现这一点吗?

共有1个答案

班安平
2023-03-14

如果有一些您永远不想用作标准值(例如空字符串),那么您可以使用

select * from t where ? in (attr1, '') and ? in (attr2, '') and ? in (attr3,'')

如果不希望检查相应的列,只需将每个参数设置为空字符串。

 类似资料:
  • 例如,如果则添加一个where子句,但如果它为空,则不会在查询中使用该子句。 最好的情况是使用筛选表单来缩小记录列表:如果没有使用筛选器,则查询甚至不会使用WHERE,而所有筛选器都可能使用,从而产生一个大的WHERE查询。 正如我现在看到的,我需要为每种情况注册一个准备好的语句,但这将导致大量语句需要分别维护和测试。

  • 我准备了以下语句,通过JDBC驱动程序将其发送到Oracle数据库: 但是,我希望使用相同的准备好的语句,通过提供通配符参数这样的东西来获取表中的所有行。我尝试了“*”和“”这样的字符串,但它总是不返回行。 是否存在用于获取所有行的此准备语句中的参数的值?

  • 问题内容: 我有一个包含多个搜索条件的搜索页面 员工姓名 员工ID 入职日期 部门 等等 用户可以提供一个或多个搜索条件。我需要查询数据库以获取搜索结果。 使用纯JDBC,有两种方法可以实现此目的。 通过附加用户提供的搜索条件来准备SQL查询。 例如: 使用 例如: 此答案说明,像上面的ex 1一样,可以修改ex2,如下所示 然后仔细地(牢记参数索引)将输入设置为准备好的语句。听起来这不是一个非常

  • 问题内容: 我正在使用nodejs npm软件包, 我目前有一系列产品skus,例如.. 我的sql存储在文件中,如下所示… 然后,我还准备了如下语句: 正确地包含在对象中,因为当我简单地使用它时,该语句可以正常工作,我只是在努力如何传递数组以使它们在准备好的语句中工作。 我使用和修改字符串,以逗号分隔等,但我无法使这些方法正常工作。 我以为我需要param字符串才能如下所示。 如果有人可以阐明如

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

  • 主要内容:标准WHERE示例WHERE子句用于对数据库应用条件并基于该条件获取数据。 在Criteria API中,AbstractQuery接口的)方法用于设置查询条件。 标准WHERE示例 在这里,我们将在表上执行多个操作。假设该表包含以下记录 - 现在,请按照以下步骤执行操作: - 第1步: 创建一个实体类。在包下创建了类文件。 该类包含三个属性:,,以及所有必需的注解。 文件:StudentEntity.java -