繁体   English   中英

如何在where子句中使用Case语句分配值

[英]How to assign value using Case statement in where clause

我要实现的逻辑是,如果greatPlainsUserId不为null,则使用它,否则使用userName但我遇到语法错误。

    ...
    WHERE (CASE
    WHEN @greatPlainsUserId IS NULL 
    THEN BUYERID = @userName 
    ELSE BUYERID = @greatPlainsUserId
    END)
    AND...

卸下CASE 只需使用简单的逻辑:

WHERE ((@greatPlainsUserId IS NULL AND BUYERID = @userName) OR
       (BUYERID = @greatPlainsUserId)
      )

仅当@greatPlainsUserId IS NOT NULL ,第二个条件才有效,因此该条件是多余的。

或者:

WHERE BUYERID = COALESCE(@greatPlainsUserId, @userName)

这可能是最简单的逻辑。

只需使用ISNULL()这两种情况。 运行以下测试代码以查看。 如果IssCost不为null,它将使用IssCost。 如果为空,则会显示“ Boooo!”。

对不起,我的示例数据很懒,我已经制作了数据,不想修改太多了:)

CREATE TABLE Payroll (
    EmployeeID int NULL
   ,PlanCode varchar(10) NULL
   ,IssCost varchar(10) NULL
)
GO

INSERT INTO Payroll (EmployeeID, PlanCode, IssCost)
VALUES (1, 'Medical', '200')
      ,(1, 'Dental', '250')
      ,(1, 'Vision', '300')
      ,(2, 'Medical', '100')
      ,(2, 'Dental', '150')
      ,(2, 'Vision', NULL)


SELECT EmployeeID
      ,PlanCode
      ,ISNULL( IssCost, 'Boooo!')
FROM Payroll

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM