我需要在SQL语句中使用IN子句。我在一个表中有数据类型为Int(11)。
和Y有一个来自另一个表的String作为条件。
例如,在表A中,i有Int类型的值3。在表/进程B中,我有字符串"0123"。
我需要查询表A来满足这个条件:Select * from Table A where attrib_1 IN (0,1,2,3)
因为记录n的值是3,所以应该返回。
所以我试图使用。setparameterlist,像这样:
List<BloqueCruzamiento> bloques = session.createQuery("FROM BloqueCruzamiento AS b WHERE b.anio=:anio AND b.activo=true AND b.grupo=:categoria AND b.pr IN(:pr_set)ORDER BY b.nroParcela, b.cruza, b.pedigree")
.setParameter("anio", grupo.getAnio())
.setParameter("categoria", grupo.getCategoria())
.setParameterList("pr_set", pr_parm)
.list();
quid在"pr_set"参数上。我想知道如何将字符串"0123"转换为整数(0,1,2,3)的集合。
所以我可以把这个参数传递给setParameterList()方法。
我现在的一种方法是将String转换为Char Array,然后循环,并将每个元素转换为Integer Array。
谁能给出另一个解决方案?
对
您可以使用下面的代码从String
获取列表 String s = "0123";
List<Integer> pr_parm = new ArrayList<Integer>();
for(int i=0;i<s.length();i++) {
if (Character.isDigit(s.charAt(i))) {
pr_parm.add(Integer.parseInt(String.valueOf(s.charAt(i))));
}
}
System.out.println(pr_parm);
那么你可以使用setParameterList("pr_set", pr_parm)
这就是解决方案。
String[] sele = grupo.getPr_sel().split(",");
Integer[] pr_parm_int = new Integer[sele.length];
for (int x=0; x<sele.length;x++){
pr_parm_int[x] = Integer.valueOf(sele[x]);
}
第一行是解析字符串并去掉逗号。