當多條件搜索時:用in 怎麼轉換
比如 當傳過來的參數是一個字符串 :str="a,b,c";
用sql ............ in(str)/in("a,b,c")顯然是不對的 我們最終需要的是 in('a','b','c');
這就需要將str:"a,b,c"轉成'a','b','c'
@Override
public List<Object> selectJobByToAndT1OfChooseMach(String t0, String t1, String str) throws Exception {
String sql="";
StringBuilder sb = new StringBuilder();
if(str!=""){
String as[]=str.split(",");
for (int i = 0; i < as.length; i++) {
sb.append("'"+as[i]+"'");//拼接單引號,到數據庫後臺用in查詢.
if(i!=as.length-1){//前面的元素後面全拼上",",最後一個元素後不拼
sb.append(",");
}
}
sql="select jobCode,machCode,mouldCode,jobManager,jobAvailability,quality,jobPerformance,startTime,endTime,jobStatus,goodUnits,scheduledProducedUnits from DBJobProduceStatus where (machCode in("+str+") and jobStatus='false' and startTime<='"+t1+"' and now() >='"+t0+"') or (machCode in("+str+") and jobStatus='true' and startTime<'"+t1+"' and endTime>'"+t0+"')";
sql=sql.replace(str, sb);
}else{
sql="select jobCode,machCode,mouldCode,jobManager,jobAvailability,quality,jobPerformance,startTime,endTime,jobStatus,goodUnits,scheduledProducedUnits from DBJobProduceStatus where (machCode in('') and jobStatus='false' and startTime<='"+t1+"' and now() >='"+t0+"') or (machCode in('') and jobStatus='true' and startTime<'"+t1+"' and endTime>'"+t0+"')";
}
Session session = hibernateTemplate.getSessionFactory().getCurrentSession();
List<Object> resultList=session.createSQLQuery(sql).list();
return resultList;
}
注:傳過來的str是一個字符串:例如:str="a,b,c";
最終效果是:'a','b','c'