2017-01-16 46 views
1

有人可以指導我如何處理以下情況:的Oracle PL/SQL:有條件的where子句

x CHAR:= 'Y'; --VARIABLE 

SELECT a.id, a.name, a.description 
FROM Table1 a 
WHERE (IF x = 'Y' THEN 
    a.name = parameter /*FILTER BY NAME*/ 
    ELSE 
    /*BRING ALL (NO NAME FILTER*/); 

我試圖做一個條件WHERE條款。 IF x = 'Y'然後按名稱過濾;否則帶來所有的名字...什麼是執行上述最好的方法?

回答

2

你只需要在一個OR聲明兩個條件要做到這一點:

SELECT a.id, a.name, a.description 
FROM Table1 a 
WHERE (x != 'Y' OR 
     (x = 'Y' AND a.name = parameter)) 

如果X是其他什麼比Y,所有記錄都將被拉到,否則,如果XY,它也將過濾器a.Name

+0

就是這樣。謝謝! –