我有一些票号可能有数字和字母混合.我将把ticketNumberIds传递给这个方法(用户输入),我希望它可以针对Oracle数据库进行查询,并且通过大小写的情况让查询的票据不同.
如何进行以下不区分大小写的查询?
public List<TicketDO> getTicketDOsById(final List<String> ticketNumberIds) {
String myQuery = "from TicketDO t where t.ticketNumberId in (:ticketNumberIds)";
return getEntityManager().createquery(myQuery).setParameter("ticketNumberIds",ticketNumberIds)
.getResultList();
}
解决方法
您可以使用UPPER来执行不区分大小写的查询.
public List<TicketDO> getTicketDOsById(final List<String> ticketNumberIds) {
String myQuery = "from TicketDO t where UPPER(t.ticketNumberId) in (:ticketNumberIds)";
List<String> upperNumbers = new ArrayList<String>();
for (String number : ticketNumberIds) {
upperNumbers.add(number.touppercase());
}
return getEntityManager().createquery(myQuery).setParameter("ticketNumberIds",upperNumbers)
.getResultList();
}