我有一個巨大的查詢,我想知道是否可能在Oracle中使用 來獲取case-when-statement的結果並將其用於比較?我的CASE-STATEMENT在Select-Statement中聲明,它看起來像這樣。ORACLE:CASE-WHEN-STATEMENT的使用結果
SELECT........
(CASE
WHEN (Select 1 from DUAL) = 1 THEN 'TEST'
ELSE 'TEST2'
END) AS TEST;
現在我想要得到這個case-statement的結果並在where部分使用它?可能嗎? (Sry基因,這可能是一個愚蠢的問題)
你在你的問題問的確切方式是不可能的。如果您在SELECT語句中將標記爲(別名)的表達式定義爲'TEST',則名稱'TEST'在同一個'SELECT'查詢的WHERE子句中不可見,因爲處理了WHERE在SELECT之前。如果你不想在WHERE子句中重複相同的(可能很長)'CASE'表達式,你最好在子查詢中定義'TEST',然後在WHERE子句中選擇並使用它外部查詢。 (你可以用'WITH'子句來做到這一點。)更適合將來的代碼維護。 – mathguy