在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中文網其他相關文章!