2010-04-30 5 views
8

인스턴트 메시징 엔티티가 포함될 수있는 일부 (하위) 문자열로 항목을 검색 할 때 간단한 문제가 발생합니다.JPQL (JPA) 검색 하위 문자열

예. user1, usr2, useeeer3, user4 사용자가 있는데 "use"창을 검색하고 user1, useeer3, user4를 반환 할 것으로 예상합니다.

나는 지금 무슨 뜻인지 확실하게 확신합니다. JPA (JQPL)에 공사가 있습니까? 어떻게 든 명명 된 쿼리에서 WHERE를 사용하여 검색하는 것이 좋을 것입니다. "u.nickname에 포함 된 사용자 선택 : 하위 문자열"

답변

13

LIKE 표현을 사용하십시오. 다음 섹션에서 인용되는 JPA 1.0 사양의 발현 (JSR 220) 추천 4.6.9 :

다음과 같이 조건식 비교 연산자 [NOT] LIKE의 사용에 대한 구문은 다음과

string_expression [NOT] LIKE pattern_value [ESCAPE escape_character] 

string_expression은 문자열 값을 가져야합니다. pattern_value는 문자열 리터럴 또는 밑줄 이 (_)는 단일 문자를 의미하는 문자열 값 입력 매개 변수하는 백분율 (%) 문자합니다 ( 빈 시퀀스를 포함) 모든 문자 순서를 의미 다른 문자는 모두 입니다. 옵션 escape_character 리터럴 단일 문자열이거나 문자 값 입력 매개 변수 (즉, char 또는 Character) 및 의 특별한 의미 밑줄 및 퍼센트 문자 pattern_value에서 을 탈출하는 데 사용 입니다.

예는 다음

  • address.phone LIKE '12 % 3 '1234'123 ','12993 '거짓'에 대한 참 '
  • LIKE'l_se asentence.word \ \ _ % 'ESCAPE'를 '
  • LIKE aword.underscored'느슨한 '에 대한 거짓'상실 '에 대한 사실이다'바 '
  • '에 대한 허위 '_foo'에 대한 사실이다 ' '12 % 3을 좋아하지 17,451,515,
  • address.phone 123 '에 대한 거짓' '와'12993 '과 마찬가지 '1234 '

경우의 값이 string_expression 또는 pattern_value 입니다 NULL이거나 알 수없는 경우 LIKE 식의 값을 알 수 없습니다. escape_character이 지정되고 NULL 인 경우 LIKE 식의 값은 알 수 없습니다.

+0

감사합니다 .-) – JavaBeginner