인프런 커뮤니티 질문&답변

isu님의 프로필 이미지
isu

작성한 질문수

[백문이불여일타] 데이터 분석을 위한 기초 SQL

Weather Observation Station 12 Oracle 쿼리문 질문 있습니다.

작성

·

139

0

인터프리터를 Oracle로 시도했을 때 쿼리문이 동작하지 않는 이유가 뭘까요??

MySQL에서는 Correct가 뜨는데 Oracle에서는 동작하지 않습니다.

Chatgpt에 물어봐도 원인을 찾지 못했습니다. 고수님들 알려주세요!!

 

답변 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에서는 작동하지 않는 경우가 발생할 수 있습니다.

isu님의 프로필 이미지
isu

작성한 질문수

질문하기