SQL 条件不工作的情况

SQL case in where condition not working

我正在尝试根据非空条件编写动态 SQL 语句。基本上我有一个存储过程,它有 2 个输入参数,即 ip1 和 ip2。 ip1 将始终具有值,但 ip2 可能具有也可能不具有 i/p 参数的值。所以我正在尝试使用如下案例编写查询。我基本上只是在 ip2 id 不为 null 作为 i/p 参数时才尝试在 where 子句中添加 ip2 条件。如果 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); 
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); 

这也有效:

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 值,这将不起作用。