2011-02-17 144 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