条件不起作用的SQL案例

时间:2017-04-27 14:03:44

标签: sql oracle case where

我正在尝试根据非null条件编写动态SQL语句。基本上我有一个存储过程,它有2个输入参数,即ip1和ip2。 ip1将始终具有值,但ip2可能具有或不具有作为i / p参数的值。所以我试图用下面的案例编写一个查询。我基本上只是在ip2 id不为null的情况下尝试在where子句中添加ip2条件作为i / p参数。如果ip2为null,则只需添加ip1条件。但是这个查询引发了错误。你能告诉我哪里出错吗?

SELECT decode(COUNT(1),0,'N','Y')
INTO v_count
FROM table C
WHERE C.column1 = ip1 
  AND (CASE
          WHEN ip2 IS NOT NULL 
             THEN c.column2 = ip2 
       END); 

2 个答案:

答案 0 :(得分:1)

SELECT decode(COUNT(1),0,'N','Y')
    INTO   v_count
    FROM   table C
    WHERE  C.column1 = ip1 
    AND (ip2 IS NULL OR c.column2 = ip2); 

答案 1 :(得分:1)

这也有效:

SELECT decode(COUNT(1),0,'N','Y')
    INTO   v_count
    FROM   table C
    WHERE  C.column1 = @ip1
    AND C.column2 = isnull(@ip2, C.column2)

...请注意,如果colmn2可以包含NULL值,这将不起作用。