本文介绍了在 IN 子句中使用 CASE 语句的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
是否可以在 IN 子句中使用 CASE 语句?
Is is possible to use a CASE statement inside an IN clause?
这是我一直试图正确编译的简化版本:
This is a simplified version of what I have been trying to get to compile correctly:
SELECT * FROM MyTable
WHERE StatusID IN (
CASE WHEN @StatusID = 99 THEN (5, 11, 13)
ELSE (@StatusID) END )
谢谢!
推荐答案
CASE
仅返回标量值.你可以这样做.(我假设,根据您的示例,当 @StatusID = 99 时,StatusID 值 99 不匹配.)
CASE
returns a scalar value only. You can do this instead. (I am assuming, as per your example, that when @StatusID = 99, a StatusID value of 99 is not a match.)
select *
from MyTable
where (@StatusID = 99 and StatusID in (5, 11, 13))
or (@StatusID <> 99 and StatusID = @StatusID)
这篇关于在 IN 子句中使用 CASE 语句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!