본문 바로가기

SQL & 데이터베이스/SQL 기본 문법 & 오류

[SQL] ORA-00904: Invalid Identifier 오류 해결 방법

[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 오류 해결 가이드도 함께 확인해보세요!