[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 예약어를 컬럼명으로 사용하지 않기
- ✅ 서브쿼리 & 별칭 사용 시 컬럼 정확히 확인
🔍 결론
이 오류는 컬럼명 문제로 인해 발생하는 오류입니다.
위 해결 방법을 적용하면 대부분의 경우 해결할 수 있습니다! 🚀
📌 더 많은 SQL 오류 해결법이 궁금하다면?
'SQL & 데이터베이스 > SQL 기본 문법 & 오류' 카테고리의 다른 글
[SQL] VIEW(뷰) 개념과 활용 방법 - 성능 최적화 및 관리 팁 (0) | 2025.03.13 |
---|---|
[SQL] 서브쿼리(Subquery) 개념 및 활용 방법 (3) | 2025.03.12 |
[SQL] INNER JOIN vs OUTER JOIN 차이 및 활용법 (0) | 2025.03.12 |
[SQL] GROUP BY와 HAVING 절 차이 및 활용법 (0) | 2025.03.12 |
[SQL] ORA-01400: Cannot Insert NULL 오류 해결 방법 (0) | 2025.03.11 |