Oracle 10.2 SQL에서는 WHERE 절 내에서 '케이스 표현식 열'을 사용하려고 할 때 문제가 발생합니다. SQL 문 처리의 논리적 순서로 인해 "ORA-00904: "%s: 잘못된 식별자" 오류가 발생했습니다.
SQL 문은 다음과 같이 처리됩니다. 순서:
원래 쿼리의 WHERE 절에서:
SELECT ename , job , CASE deptno WHEN 10 THEN 'ACCOUNTS' WHEN 20 THEN 'SALES' ELSE 'UNKNOWN' END AS department FROM emp WHERE department = 'SALES'
'부서 CASE 표현식에 의해 생성된 ' 열은 WHERE 절 평가 중에 아직 존재하지 않습니다. 따라서 WHERE 절은 사용할 수 없습니다. 비교를 위해 사용합니다.
이 제한을 극복하려면 하위 쿼리 내에 쿼리를 묶으십시오.
SELECT * FROM ( SELECT ename , job , CASE deptno WHEN 10 THEN 'ACCOUNTS' WHEN 20 THEN 'SALES' ELSE 'UNKNOWN' END AS department FROM emp ) tmp WHERE department = 'SALES' ;
또는 WHERE에 CASE 표현식을 복제하세요. 절:
SELECT ename , job , CASE deptno WHEN 10 THEN 'ACCOUNTS' WHEN 20 THEN 'SALES' ELSE 'UNKNOWN' END AS department FROM emp WHERE CASE deptno WHEN 10 THEN 'ACCOUNTS' WHEN 20 THEN 'SALES' ELSE 'UNKNOWN' END = 'SALES' ;
WHERE 절 조건이 특정 부서 번호와 직접 일치하는 경우 단순화된 옵션이 가능합니다.
SELECT ename , job , 'SALES' AS department FROM emp WHERE deptno = 20 ;
위 내용은 Oracle 10.2 WHERE 절에서 CASE 표현식 열을 어떻게 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!