首頁 >資料庫 >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 中的WCASE 子句中使用式列時,您可以如果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