首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >。使用in运算符的WHERE子句中的CASE表达式

。使用in运算符的WHERE子句中的CASE表达式
EN

Stack Overflow用户
提问于 2015-06-01 13:05:34
回答 3查看 2.4K关注 0票数 0

如果用户将800作为@WorkShop,则应返回所有具有800个车间id和900个车间Id的记录。

如果用户将任何其他Id作为@WorkShop传递,则应该只返回选择的@WorkShop Id的记录。

我试过以下几点:

代码语言:javascript
复制
SELECT *
FROM Test
WHERE Workshop IN ( 
                    CASE 
                        WHEN @WorkShop = N'800' THEN N'900' AND N'800' 
                        ELSE @WorkShop 
                    END 
                    ) 

这将返回一个错误:

代码语言:javascript
复制
Incorrect syntax near the keyword 'and'.

因此,总之,如果用户传递800作为@WorkShop参数,它应该返回如下内容:

代码语言:javascript
复制
Workshop IN ('800', '900')
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-01 13:07:19

这是你想要的吗?

代码语言:javascript
复制
SELECT *
FROM Test
WHERE ( @WorkShop = '800' AND  Workshop IN('800', '900') )
OR @WorkShop =  Workshop
票数 8
EN

Stack Overflow用户

发布于 2015-06-01 14:17:58

另一种方法

代码语言:javascript
复制
SELECT *
FROM   Test
WHERE  Workshop IN ( @WorkShop, CASE
                                  WHEN @WorkShop = N'800' THEN N'900'
                                END ) 
票数 2
EN

Stack Overflow用户

发布于 2015-06-01 13:08:15

试试这个:

代码语言:javascript
复制
SELECT *
FROM Test
WHERE (@WorkShop = '800' AND  (Workshop = '800' or  Workshop = '900'))
OR @WorkShop =  Workshop
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30574312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档