작성
·
260
-1
안녕하세요 !
WHERE 해커링크풀이 1 에서 모음으로 시작하는 나라에 대한 답변을 아래와 같이 알려주셨는데
SELECT DISTINCT city
FROM station
WHERE city LIKE 'a%'
OR city LIKE 'e%'
OR city LIKE 'o%'
OR city LIKE 'i%'
OR city LIKE 'u%'
아래와 같이 입력하면 안될까요 ?
SELECT DISTINCT city
FROM station
WHERE city IN ('a%', 'e%', 'o%', 'i%', 'u%' )
안된다면 왜 안되는지도 알려주시면 감사하겠습니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
jinv93님, IN
절은 주어진 리스트에서 정확히 일치하는 값들을 조회할 때 사용합니다. 따라서 ‘a%’, ‘e%’, ‘o%’, ‘i%’, ‘u%’ 와 같이 와일드카드를 사용한 패턴과는 사용할 수 없습니다.
LIKE
연산자는 문자열 패턴 매칭에 사용되며, %
는 여러 개의 문자를 대응하는 와일드카드로 사용됩니다. 그렇기 때문에 모음으로 시작하는 도시 이름을 찾기 위해 LIKE 'a%'
처럼 사용해야 합니다.
아래와 같이 사용하면 각각의 경우에 대해 와일드카드 패턴을 적용하여 조회할 수 있습니다:
SELECT DISTINCT city
FROM station
WHERE city LIKE 'a%'
OR city LIKE 'e%'
OR city LIKE 'o%'
OR city LIKE 'i%'
OR city LIKE 'u%'
이 방법은 모음으로 시작하는 도시 이름을 찾기 위해서는 적합하지만, IN
절로는 해당 작업이 불가능합니다.
정확한 사용 예에 대해서는 Spring Data JPA의 문서에서 @Query
를 사용한 예시를 통해 살펴볼 수 있습니다. LIKE
표현식은 %
와일드카드를 활용하여 JPQL 쿼리를 정의하는 데 사용됩니다. 참고하시면 도움이 될 것입니다.
Spring Data JPA 문서:
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.at-query
도움이 되셨길 바랍니다.
답변 감사드립니다. 그러면
WHERE city LIKE ('a%', 'e%', 'o%', 'i%', 'u%' ) 로 사용은 불가능 할까요 ?