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

如何在PreparedStatement中处理(也许)空值?

阴雪风
2023-03-14
问题内容

该声明是

SELECT * FROM tableA WHERE x = ?

并通过java.sql.PreparedStatement’stmt’插入参数

stmt.setString(1, y); // y may be null

如果y为null,则在每种情况下该语句均不返回任何行,因为x = null它始终为false(应为x IS NULL)。一种解决方案是

SELECT * FROM tableA WHERE x = ? OR (x IS NULL AND ? IS NULL)

但是然后我必须两次设置相同的参数。有更好的解决方案吗?

谢谢!


问题答案:

我一直按照您在问题中所表现的方式来做。两次设置相同的参数不是很大的困难,不是吗?

SELECT * FROM tableA WHERE x = ? OR (x IS NULL AND ? IS NULL);


 类似资料:
  • 假设我们有一个函数sqrt的示例,它为我们提供浮点数的平方根,但不会在负输入时中止。那么sqrt的类型是什么。 我被告知答案是: 然而,我不明白Maybe是做什么的,它仅仅意味着我们可以提供任何东西作为输入,还是意味着其他东西。

  • 我有一个使用Jersey编写的RESTful web服务,看起来如下所示: 问题:是否有方法接受空请求负载,并在服务器端处理它? 注意:我使用的是Jersey提供的POJO支持。

  • 问题内容: 由于数据库表中的值为空,我得到“ org.hibernate.PropertyAccessException” 。如何处理异常? 我的档案是 FetchTest.java FetchTest.java Employee.java hibernate.cfg.xml employee.hbm.xml When I ran this application I am getting bel

  • 我有一个函数,是递减用户信用的firebase实时数据库值与事务。正如Firebase事务API调用中所建议的,当前数据为空事务当前值偶尔返回为空。 第二次调用当前值:0 第二次调用中止 首次调用电流值:5 第一次呼叫返回5-3 首次呼叫成功 第二次调用不提交 因此,当用户有足够的信用时,第二个收费电话最终没有通过。处理firebase事务空值情况的正确方法是什么?

  • 问题内容: 我正在使用JPA,hibernate3。 当没有空值或空值时,此查询就像一个超级按钮。但是 traceEntityVO.getLotNumber(),traceEntityVO.getMfrLocId(),traceEntityVO.getExpDate()的 值可能为null或为空 。 在这种情况下,将针对变量而不是 null 条件来检查值’null’或’‘ 。当我不确定参数值是否为

  • 我的授权服务在成功时返回http 204,在失败时返回http 401,但没有响应库。我无法使用RestTemplate客户端使用此功能。尝试序列化响应失败。来自Jackson的错误建议我在序列化程序中打开FAIL_on_EMPTY_bean,但是如何在restTemplate中设置它呢 使用RESTAPI的客户端 其余服务 例外 尝试的修复 下一个错误