SQL & 데이터베이스/SQL 기본 문법 & 오류
[SQL] ORA-00904: Invalid Identifier 오류 해결 방법
Jinsapp
2025. 3. 10. 22:44
[SQL] ORA-00904: Invalid Identifier 오류 해결 방법
📌 오류 메시지:
ORA-00904: "COLUMN_NAME": invalid identifier
🔹 오류 발생 원인
ORA-00904 오류는 잘못된 컬럼명을 사용했을 때 발생합니다. 주요 원인은 다음과 같습니다.
1️⃣ 컬럼명이 존재하지 않음
- SQL 문에서 해당 테이블에 없는 컬럼을 조회할 때 발생
- 해결 방법: 현재 테이블에 존재하는 컬럼명을 확인
SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME = 'EMPLOYEES';
2️⃣ 대소문자 문제
- Oracle에서는 기본적으로 컬럼명을 대소문자 구분 없이 처리
- 하지만 쌍따옴표("")를 사용하면 대소문자가 구분됨
해결 방법:
SELECT employee_name FROM employees; -- 올바른 방식
SELECT "EMPLOYEE_NAME" FROM employees; -- 컬럼이 대문자로 저장된 경우
3️⃣ SQL 예약어 사용
- USER, DATE, ORDER 같은 예약어를 컬럼명으로 사용하면 오류 발생 가능
- 해결 방법: 컬럼명을 변경하거나 따옴표로 감싸기 (비추천)
SELECT "USER" FROM employees; -- 권장하지 않음
4️⃣ 잘못된 별칭(Alias) 사용
- 서브쿼리에서 잘못된 컬럼명을 참조하면 발생
오류 발생 코드:
SELECT a.salary FROM (SELECT emp_id FROM employees) a; -- salary 컬럼이 없음
해결 방법: 서브쿼리에서 필요한 컬럼을 명확히 포함
SELECT a.salary FROM (SELECT emp_id, salary FROM employees) a;
🔹 해결 방법 요약
- ✅ 컬럼명이 실제 존재하는지 확인 (
USER_TAB_COLUMNS
활용) - ✅ 대소문자 구분 문제 해결 (쌍따옴표 주의!)
- ✅ SQL 예약어를 컬럼명으로 사용하지 않기
- ✅ 서브쿼리 & 별칭 사용 시 컬럼 정확히 확인
🔍 결론
이 오류는 컬럼명 문제로 인해 발생하는 오류입니다.
위 해결 방법을 적용하면 대부분의 경우 해결할 수 있습니다! 🚀