• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

LIKE/IN 질문

24.01.09 09:03 작성 조회수 111

-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 인턴님의 프로필

인프런 AI 인턴

2024.01.11

안녕하세요, 인프런 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

도움이 되셨길 바랍니다.

jinv93님의 프로필

jinv93

질문자

2024.01.11

답변 감사드립니다. 그러면

WHERE city LIKE ('a%', 'e%', 'o%', 'i%', 'u%' ) 로 사용은 불가능 할까요 ?

불가능합니다.

WHERE city LIKE 'a%' 
   OR city LIKE 'e%'
   ...

와 같이 하나하나 비교해 줘야 합니다.