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