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