我有一些票号可能有数字和字母混合.我将把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(); }