使用If在Select - Where中

时间:2017-09-29 10:24:44

标签: if-statement select plsql where

我想知道:是否可以在WHERE子句中为SELECT使用IF语句?  这是一个样本:

SELECT var1, var2, .. AS name
FROM table1 C, table2 F, table3 D,.. 
WHERE C.id = f.id, AND ..
AND (IF expression THEN F.num <0; -- <-- is this possible?
     ELSE F.num >0);

提前致谢

3 个答案:

答案 0 :(得分:1)

在此场景中:使用 CASE 声明

SELECT var1, var2, .. AS name
FROM table1 C, table2 F, table3 D,.. 
WHERE C.id = f.id, AND ..
AND COL = (CASE WHEN F.NUM <0 THEN (UR COL) 
                WHEN ELSE F.num > 0 ELSE '' END)

以上代码仅为示例,请尝试应用您自己的方案。

答案 1 :(得分:0)

我发现了一种方法。这是解决方案

SELECT
.
.
WHERE ..
AND SIGN(F.NUM) = DECODE(expression,-1,1);

比我想象的更简单。对不起,麻烦

答案 2 :(得分:0)

你应该可以不用if语句。

Where (expression And num >0)
       Or ( not( expression) and num<0)