[英]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.