繁体   English   中英

在WHERE子句中使用CASE语句

[英]Using a CASE statement in the WHERE clause

我一直在寻找其他问题,找不到像我的具体情况那样的问题。

我需要一些方法在WHERE子句中执行条件语句,如下所示:

如果字段dqpoln不为0,我需要添加比较“ AND dqpoln = mppoln”。

   " SELECT ... "
   " FROM ... "
   " WHERE ((dqtype=@userType AND dqssn=@userSSN) OR (dqtype=a.maagtt AND dqssn=a.maassn)) " &
   " CASE dqpoln WHEN 0 THEN '' ELSE  AND dqpoln=mppoln  END "

我尝试了几种不同的方式使用CASE语句,并尝试了一些IF语句。 似乎对我没有任何帮助。

您只能使用布尔逻辑来尝试:

(dqpoln = 0 OR dqpoln = mppoln)

或者,如果您坚持使用CASE ,则类似以下内容:

CASE dqpoln
  WHEN 0 THEN
    mppoln
  ELSE
    dqpoln
END = mppoln

OP。 我不知道我是否完全理解你的问题。 您是在说dqpoln不为0的情况下,它必须加上条件AND dqpoln = mppoln

下面的伪代码应该基于您对问题的了解而运行。 假定这两个条件之一必须成立(要么为0,否则为dqpoln = mpplon):

SELECT
    ...
FROM
    ...
WHERE
    (
        (dqtype=@userType AND dqssn=@userSSN) OR (dqtype=a.maagtt AND dqssn=a.maassn)
    ) AND
    (
        ((dqpoln = 0) OR (dqpoln=mppoln))
    )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM