简体   繁体   English

CASE THEN表达式中的结果表达式中的IN语句

[英]IN statement in result expression in CASE THEN expression

Is it possible to use IN in CASE..THEN ? CASE..THEN可以使用IN吗?

WHERE
   record.field =
      CASE
          WHEN @flag = 1 THEN a
          WHEN @flag = 2 THEN IN (b, c)
      END

Or how to rewrite such condition? 或者如何重写这样的条件?

Sorry, no: 抱歉,没有:

WHERE
    (@flag = 1 AND record.field = a)
    OR
    (@flag = 2 AND record.field IN (b, c))

try: 尝试:

WHERE (@flag = 1 AND record.field = a )
    OR (@flag = 2 AND record.field IN (b, c))

it might be better to try to JOIN in the value and use an index: 尝试在值中加入并使用索引可能更好:

DECLARE @Table (ValueOf  int)
INSERT INTO @Table ((ValueOf)
    SELECT a WHERE @flag = 1
    UNION SELECT b WHERE @flag = 2
    UNION SELECT c WHERE @flag = 2

SELECT
    ....
    FROM ...           x
    INNER JOIN @Table  t ON x...=t.ValueOf  

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

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