2011-02-17 101 views
9

我有一些票号可能有数字和字母混合在一起。我将传入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(); 

} 

回答

25

您可以使用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(); 

} 
+1

这不适合我,我在德比数据库上运行。这可能是由于某种方言的差异? – 2012-06-07 08:52:51