9
숫자와 문자가 섞여있는 티켓 번호가 있습니다. 나는이 방법 (사용자 입력)에 ticketNumberIds
을 전달할 것이고 나는 오라클 데이터베이스에 대해 질의하고 쿼리가 대문자와 소문자가 다른 티켓을 가져 오도록하고 싶습니다.대/소문자를 구분하지 않는 쿼리
대/소문자를 구분하지 않는 쿼리는 어떻게 작성합니까?
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();
}
이것은 저에게 적합하지 않습니다. Derby 데이터베이스에서 실행 중입니다. 이것이 방언 불일치로 인한 것일 수 있습니까? –
나는 Derby도 사용하고 있으며 잘 작동합니다. 정교한 케어? –
이것은 DB에서 테이블 스캔을 강제 실행하므로 티켓 번호가 ticketNumberId 인 경우 사용되지 않을 가능성이 높습니다. 이 문제를 피하기 위해 엔티티 설정자에서 대문자로 변환 할 수 있으므로 모든 티켓 번호는 .persist() 중에 대문자로 저장됩니다. 그런 다음 위의 코드에서 UPPER() 함수가 더 이상 필요하지 않으므로 해당 열의 모든 인덱스를 사용할 수 있습니다. – DTs