집 >데이터 베이스 >MySQL 튜토리얼 >Oracle 10.2 WHERE 절에서 CASE 표현식 열을 사용하는 방법은 무엇입니까?
Oracle 10.2의 WHERE 절에서 CASE 표현식 열 사용
Oracle 10.2의 WHERE 절에서 CASE 표현식 열을 사용할 때 다음이 가능합니다. CASE 표현식 열이 아직 정의되지 않은 경우 "ORA-00904: 잘못된 식별자" 오류가 발생합니다. 쿼리에서. 이는 Oracle 10.2에서는 WHERE 절이 SELECT 절보다 먼저 평가되기 때문입니다.
해결 방법 1: 쿼리를 다른 쿼리로 묶기
이 제한을 극복하려면 CASE 표현식을 정의하는 다른 쿼리에 쿼리를 포함할 수 있습니다. 열:
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';
해결책 2: WHERE 조건에서 계산 복제
또는 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';
단순화 버전
부서 번호가 20인 직원 중에서 영업부서를 간단히 선택하여 쿼리를 단순화할 수도 있습니다.
SELECT ename , job , 'SALES' AS department FROM emp WHERE deptno = 20;
위 내용은 Oracle 10.2 WHERE 절에서 CASE 표현식 열을 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!