2011-11-29 71 views
1

我有一個VARCHAR其值AAA或BBB讓說 依靠這個我必須做出與條件甲骨文選擇

SELECT x FROM y WHERE y AND som = 1 

SELECT x FROM y WHERE y AND som = 2 

我有什麼辦法,使這個像

SELECT i AS j, 
case xxx 
     when z then som1 
     else som2 
    end as ABC 
FROM ... 

//編輯

我想要做這樣的事(可以說,它的僞代碼;))

variable VARCHAR; 

SELECT id FROM table WHERE age = 
CASE variable 
WHEN 'aaa' THEN 21 
ELSE 'bbb' THEN 99 
END 
+5

是的,你可以,'CASE'按照你寫的那樣工作。 –

+0

好的,如果我想在WHERE –

+4

之後提出這種情況會怎麼樣?如果您發佈了實際的表格和列名稱會更好。現在很難理解,什麼是表格,什麼是列,什麼(如果存在的話)是一個變量。 –

回答

5

你可以使用一個CASE聲明

SELECT id 
    FROM table 
WHERE age = (CASE WHEN variable = 'aaa' 
        THEN 21 
        WHEN variable = 'bbb' 
        THEN 99 
        ELSE null 
       END) 

但是,它可能更有效,更易於閱讀只是做一個OR

SELECT id 
    FROM table 
WHERE (variable = 'aaa' AND age = 21) 
    OR (variable = 'bbb' AND age = 99)