【问题标题】:trying to get single column data with switch case statement尝试使用 switch case 语句获取单列数据
【发布时间】:2018-04-28 14:38:28
【问题描述】:

我正在尝试根据下面这样的角色查询表,但我收到这样的错误

“=”附近的语法不正确。

我不知道为什么会出现这个错误

下面是我的查询

CREATE procedure [dbo].[getName]            
    @AccountId int,    
    @role varchar(50),
    @Activated_By nvarchar(100)            
AS            
BEGIN           

    SELECT   Name 
    FROM     pass_activationinfo 
    WHERE 
        CASE WHEN @role = 'Admin'
             THEN account_id = @AccountId
             ELSE Activated_By = @Activated_By
        END
END

【问题讨论】:

    标签: sql-server tsql sql-server-2012 sql-server-2014


    【解决方案1】:

    第一个变种

    SELECT   Name 
    FROM     pass_activationinfo 
    WHERE 
            (@role = 'Admin' AND account_id = @AccountId)
        OR (@role <> 'Admin' AND Activated_By = @Activated_By)
    

    第二个变种

    SELECT   Name 
    FROM     pass_activationinfo 
    WHERE 
        CASE
          WHEN @role = 'Admin' AND account_id = @AccountId THEN 1
          WHEN @role <> 'Admin' AND Activated_By = @Activated_By THEN 1
          ELSE 0
        END = 1
    

    【讨论】:

      【解决方案2】:

      更改大小写并改用 OR

      CREATE procedure [dbo].[getName]            
          @AccountId int,    
          @role varchar(50),
          @Activated_By nvarchar(100)            
      AS            
      BEGIN           
      
          SELECT   
              Name 
          FROM pass_activationinfo 
          WHERE 
              (
                  @role = 'Admin'
                  AND
                  account_id = @AccountId
               )
               OR
               (
                  @role <> 'Admin'
                  AND
                  Activated_By = @Activated_By
               )
      
      
      END
      

      【讨论】:

        【解决方案3】:

        你可以用这个

           SELECT   Name 
            FROM     pass_activationinfo 
            WHERE 
                (( @role = 'Admin'
                     and  account_id = @AccountId)
                     or Activated_By = @Activated_By) 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-08-31
          • 1970-01-01
          相关资源
          最近更新 更多