>데이터 베이스 >MySQL 튜토리얼 >Oracle 10.2 WHERE 절에서 CASE 표현식 열을 사용하는 방법은 무엇입니까?

Oracle 10.2 WHERE 절에서 CASE 표현식 열을 사용하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-03 10:56:39529검색

How to Use a CASE Expression Column in an Oracle 10.2 WHERE Clause?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.