简体   繁体   English

在WHERE子句中使用CASE语句

[英]Using a CASE statement in the WHERE clause

I've been looking through other questions and couldn't find one like my specific situation. 我一直在寻找其他问题,找不到像我的具体情况那样的问题。

I need some way to do conditional statements in my WHERE clause like the following: 我需要一些方法在WHERE子句中执行条件语句,如下所示:

If field dqpoln isn't 0, I need to add that comparison " AND dqpoln=mppoln ". 如果字段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 "

I've tried using a CASE statement a few different ways and tried some IF statements as well. 我尝试了几种不同的方式使用CASE语句,并尝试了一些IF语句。 Nothing seems to work for me. 似乎对我没有任何帮助。

You can try it with Boolean logic only: 您只能使用布尔逻辑来尝试:

(dqpoln = 0 OR dqpoln = mppoln)

Or, if you insist in using CASE , with something like: 或者,如果您坚持使用CASE ,则类似以下内容:

CASE dqpoln
  WHEN 0 THEN
    mppoln
  ELSE
    dqpoln
END = mppoln

OP. OP。 I don't know if I quite understand your question. 我不知道我是否完全理解你的问题。 Are you saying that in a situation where dqpoln is NOT 0, then it must add the condition AND dqpoln = mppoln 您是在说dqpoln不为0的情况下,它必须加上条件AND dqpoln = mppoln

The following pseudocode below should run based off of the limited knowledge we have from your question. 下面的伪代码应该基于您对问题的了解而运行。 Assuming one of those two conditions MUST hold (it's either 0, or if not, it must equal dqpoln = mpplon): 假定这两个条件之一必须成立(要么为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