작성
·
139
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
이미지에 대한 설명을 감안할 때, 문제의 주요 원인은 Oracle 데이터베이스에서 실행할 때 발생하네요. Oracle에서는 문자열의 대소문자를 구분합니다. 만약 “STATION” 테이블의 “CITY” 열에 저장된 도시 이름이 모두 대문자이거나 모두 소문자라면, NOT LIKE
절을 사용할 때도 동일한 대소문자를 사용해야 합니다. 예를 들어, 도시 이름이 대문자로 저장되어 있다면, NOT LIKE 'A%'
가 올바르게 도시 이름을 필터링하지만, NOT LIKE 'a%'
는 아무 결과도 반환하지 않습니다.
해결 방법으로는 UPPER
또는 LOWER
함수를 사용하여 “CITY” 열의 이름을 일관된 대소문자 형식으로 변환한 후, NOT LIKE
조건을 적용하는 것입니다. 예를 들어, 모든 도시 이름을 대문자로 변환하려면 다음과 같이 쿼리를 수정할 수 있습니다:
SELECT DISTINCT CITY FROM STATION
WHERE UPPER(CITY) NOT LIKE 'A%'
AND UPPER(CITY) NOT LIKE 'E%'
AND UPPER(CITY) NOT LIKE 'I%'
AND UPPER(CITY) NOT LIKE 'O%'
AND UPPER(CITY) NOT LIKE 'U%';
이 방식대로라면 Oracle에서도 기대하는 결과를 얻을 수 있을 것입니다. Oracle과 MySQL은 다양한 방식으로 문자열 대소문자를 다루기 때문에, 이런 차이로 인해 한 DBMS에서는 작동하고 다른 DBMS에서는 작동하지 않는 경우가 발생할 수 있습니다.