【发布时间】:2013-10-16 19:14:18
【问题描述】:
是否可以在 where in 子句中使用 case ? 像这样的:
DECLARE @Status VARCHAR(50);
SET @Status='published';
SELECT * FROM Product P
WHERE P.Status IN (CASE WHEN @Status='published' THEN (1,3)
WHEN @Status='standby' THEN (2,5,9,6)
WHEN @Status='deleted' THEN (4,5,8,10)
ELSE (1,3)
END)
此代码给出错误:',' 附近的语法不正确。
【问题讨论】:
-
P.Status 的类型是什么?
-
您可以在
where中使用case,但不能这样。Case每条语句必须返回一个值。 -
@MaryamArshi:P.Status 的类型是 int。
-
@SeanCoetzee。我不明白。可以举个例子吗?
-
只是问,THEN(2,5,9,6) 有什么意义?
标签: sql select switch-statement case where-in