我已经阅读了q& a的大量信息,但是没有一个符合我想要实现的目标。 我甚至不知道这是否可能!任何帮助/建议将不胜感激。
我正在尝试基于
构建条件WHERE
子句
CustID (int) = @CustomerID
如果@CustomerID = 0
,那么我希望结果为WHERE CustID > 0
(即返回所有客户),否则我只想要某些客户CustID = @CustomerID
这可能吗?
答案 0 :(得分:15)
就这么做 WHERE(@CustomerID = 0或CustID = @CustomerID)
答案 1 :(得分:6)
这样的事情?
SELECT *
FROM YOURTABLE
WHERE
( CASE
WHEN @CustomerID = 0 THEN CustID
ELSE 1
END
) > 0
AND
( CASE
WHEN @CustomerID <> 0 THEN @CustomerID
ELSE CUSTID
END
) = CUSTID
答案 2 :(得分:0)
在sql中模拟IF-ELSE语句的最常用方法是CASE和DECODE(至少在oracle中): Ex伪代码:
if (x == 1) then y; else if (x == 2) then z; end if
CASE:
select
case x
when 1 then y
when 2 then z
end example
from dual;
DECODE:
select decode(x,1,y,2,z) example from dual;