繁体   English   中英

jdbc preparedStatements为IN内的多个值

[英]jdbc preparedStatements for multiple value inside IN

如何设置带有IN的 sql的值,它可以包含变量数,如... WHERE ... status IN(4,6,7);

PreparedStatement ps = con.prepareStatement(
              "SELECT ea.* FROM employeeAssignment ea "
            + "JOIN employee e ON e.employeeID = ea.employeeID "
            + "WHERE e.resourceID = ? and ea.status IN (?);");
ps.setInt(1, 75); 
ps.setInt(2, someArray/some thing other?); 

您可以根据需要传入的状态代码生成SQL IN子句。因此,如果您的状态为IN (4,6,7)那么您可以生成一个以与代码相同数量的问号结束的SQL语句: IN (?,?,?)

您需要为数组/列表中的每个条目绑定一个值:

SQL:

ea.status IN (?, ?, ..., ?)

Java的:

ps.setInt(2, someArray[0]); 
ps.setInt(3, someArray[1]); 
..
ps.setInt([...], someArray[someArray.length]); 

让我提一下AFAIK只在Postgres中工作的解决方案。 Postgres有数组,你可以传入一个字符串表示'{1,2,3}'。 IN可以替换为ANY (实际上,在某些情况下,这是PG根据规划器输出IN内部处理IN查询的方式。阵列可以完全在客户端使用循环构建,然后作为字符串传入瞧。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM