2017-06-02 117 views
1

我需要一個CASE語句來返回一個字符串列表,但我遇到了一些語法問題。產生的SQL應該是這樣的:PL/SQL在CASE語句中返回一個列表

SELECT * FROM FRUIT WHERE COLOR IN ('RED', 'YELLOW') 

我想要做的(這不起作用):

SELECT * FROM FRUIT WHERE COLOR IN 
CASE 
    WHEN TYPE = *something* 
    THEN ('RED', 'YELLOW') 
    ELSE ('GREEN') 
END 

這工作:

SELECT * FROM FRUIT WHERE COLOR IN 
CASE 
    WHEN TYPE = 1 
    THEN 'RED' 
    ELSE 'GREEN' 
END 

錯誤我得到︰

ORA-00907 missing right parenthesis 

它的作品,當我使用多個COLOR ='X'或COLOR ='Y',但我想知道是否有辦法只使用一個CASE語句。提前致謝。

+0

只需使用布爾邏輯來代替。使用案例表達式沒有優勢。 –

+0

爲什麼不使用工會?當你需要從一個表中查詢,但是有條件的時候 - 工會是最常見的方式。 – Ychdziu

+0

你的預期輸出是什麼? – maSTAShuFu

回答

5

A Case語句只能返回一個值。我認爲你不需要CASE語句中,可以使用IN操作,不用Case,這樣

SELECT * 
FROM FRUIT 
WHERE TYPE = 'something' AND COLOR IN ('RED', 'YELLOW') 
OR TYPE <> 'something' AND COLOR IN ('GREEN') 
+0

哦,我明白了。我會用這種方法。謝謝,我會接受你的回答。 – somagrave