如何使用 IN 设置sql的值,该值可以包含变量数字,例如 ... WHERE ...状态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?);
答案 0 :(得分:2)
您可以根据需要传入的状态代码生成SQL IN子句。因此,如果您的状态为IN (4,6,7)
,那么您可以生成一个以与代码相同数量的问号结束的SQL语句: IN (?,?,?)
。
答案 1 :(得分:1)
您需要为数组/列表中的每个条目绑定一个值:
SQL:
ea.status IN (?, ?, ..., ?)
Java:
ps.setInt(2, someArray[0]);
ps.setInt(3, someArray[1]);
..
ps.setInt([...], someArray[someArray.length]);
答案 2 :(得分:0)
让我提一下AFAIK只在Postgres中起作用的解决方案。 Postgres有数组,你可以传入一个字符串表示'{1,2,3}'。 IN
可以替换为ANY
(事实上,在某些情况下,这是PG根据规划器输出在内部处理IN
查询的方式。阵列可以通过循环构建完全在客户端,然后作为一个字符串传递,瞧。
答案 3 :(得分:0)