【发布时间】:2017-04-27 14:03:44
【问题描述】:
我正在尝试根据非空条件编写动态 SQL 语句。基本上我有一个存储过程,它有 2 个输入参数,即 ip1 和 ip2。 ip1 将始终具有值,但 ip2 可能具有也可能没有作为 i/p 参数的值。所以我想用下面的例子写一个查询。我基本上只是在 ip2 id 不为 null 作为 i/p 参数的情况下尝试在 where 子句中添加 ip2 条件。如果 ip2 为空,则只需添加 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);
【问题讨论】:
-
在
WHERE和ON子句中,通常最好使用AND/OR而不是case表达式。 -
您使用哪种 DBMS?
-
AND (ip2 is NULL or c.column2 = ip2)