首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有等于或不等于EqualTo值的简单选择查询

带有等于或不等于EqualTo值的简单选择查询
EN

Stack Overflow用户
提问于 2012-02-10 07:43:42
回答 4查看 14.2K关注 0票数 0

假设我有这张桌子,

代码语言:javascript
复制
A    B
-------
1    A
2    C
3    A
4    NULL
5    B
6    A

存储过程中只有一个参数。我需要传递一个参数@param。我需要选择所有与A相等的行,或者选择不等于A的所有行。我只有一个参数@param。如果@param = ' A‘选择带A的所有行,如果@param <> 'A’选择不等于A的所有行。

编辑:

这是我找到的一种方法。不确定哪种方法是最佳的

代码语言:javascript
复制
DECLARE @Param VARCHAR(5)='NOt A'

DECLARE @tbl TABLE(A INT,B VARCHAR(5))

INSERT INTO @tbl(A,B)
VALUES
    (1,'A'),
    (2,'C'),
    (3,'A'),
    (4,NULL),
    (5,'B'),
    (6,'A')

SELECT  * 
FROM    @tbl 
WHERE 1 = 
        (
            CASE    WHEN @param = 'A' 
                    THEN 
                    (
                        CASE WHEN B = 'A' THEN 1 ELSE 2 END
                    ) 
                    ELSE 
                    (
                        CASE WHEN (B IS NULL OR B <> 'A') THEN 1 ELSE 2 END
                    ) 
                    END
        ) 
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-02-10 07:49:16

因此,如果我正确地理解了您的意思,您基本上希望选择与A相等的所有行(如果@param的值确实是A )--如果它不是A,则选择所有其他行?

类似于:

代码语言:javascript
复制
 CREATE PROCEDURE dbo.SelectRows @Param CHAR(1)
 AS 
 BEGIN
   IF @Param = 'A' THEN

     SELECT A, B
     FROM dbo.YourTable
     WHERE B = 'A'

   ELSE

     SELECT A, B
     FROM dbo.YourTable
     WHERE B <> 'A' OR B IS NULL

 END 
票数 4
EN

Stack Overflow用户

发布于 2012-02-10 10:55:28

marc_s建议的方法是最清晰、最容易维护和优化查询的方法。

如果您坚持在一条语句中执行此操作,则可以执行以下操作:

代码语言:javascript
复制
select A, B
from @tbl  
where ((@Param='A') and (B='A'))
   or ((@Param<>'A') and ((B<>'A') or (B is null)))
票数 2
EN

Stack Overflow用户

发布于 2012-02-10 07:55:14

你可以试试这样的东西。请尝试修改此查询,您可能会得到结果。

代码语言:javascript
复制
  SELECT A, B
         FROM dbo.YourTable
         WHERE B IN (CASE WHEN @Param='A' THEN 'A' ELSE
                        (SELECT B FROM yourTable where B<>'A' OR B IS NULL) END)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9224373

复制
相关文章

相似问题

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