首頁 > 資料庫 > mysql教程 > 如何在 Oracle 10.2 WHERE 子句中使用 CASE 表達式列?

如何在 Oracle 10.2 WHERE 子句中使用 CASE 表達式列?

Patricia Arquette
發布: 2025-01-03 21:13:40
原創
884 人瀏覽過

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

在WHERE 子句中使用「Case 表達式列」

Oracle 10.2 SQL 在嘗試在WHERE 子句中使用「Case 表達式列」時提出了挑戰。由於 SQL 語句處理的邏輯順序,遇到錯誤「ORA-00904:「%s:無效識別碼」。

SQL 處理的邏輯順序

SQL語句以以下方式處理序列:

  1. FROM:表選擇與行組合
  2. WHERE:行過濾
  3. GROUP BY:行分組
  4. HAVING:行過濾
  5. SELECT:列檢索
  6. DISTINCT:重複行刪除
  7. UNION /EXCEPT/INTERSECT:子結果操作
  8. ORDER BY:行排序

錯誤原因

原始查詢的WHERE子句中:

SELECT ename
, job
, CASE deptno
WHEN 10
THEN 'ACCOUNTS'
WHEN 20
THEN 'SALES'
ELSE 'UNKNOWN'
END AS department
FROM emp
WHERE department = 'SALES'
登入後複製

'department '由CASE 表達式產生的列在WHERE子句求值期間尚不存在,因此,WHERE子句不能。 >解法2:重複CASE 表達式WHERE 子句

或者,在WHERE 中複製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' ;
登入後複製

如果 WHERE 子句條件直接符合特定部門編號,則可以使用簡化選項:

以上是如何在 Oracle 10.2 WHERE 子句中使用 CASE 表達式列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板