CASE表达式语法错误SQL

问题描述

| 我到处都进行了研究,但似乎仍无法解决一个简单的错误: 运行Microsoft sql Server:
UPDATE copyprogmaster
       SET active =
                 CASE
                   WHEN active = 1 THEN active = 0
                   WHEN active = 0 THEN active = 1
                  ELSE active
                 END
WHERE source = \'Mass_Mail\'
我的错误是:   第4行:\'= \'附近的语法不正确。     

解决方法

        在
THEN
之后删除
=
,因此:
  UPDATE copyprogmaster
       SET active =
                 CASE
                   WHEN active = 1 THEN 0
                   WHEN active = 0 THEN 1
                  ELSE active
                 END
  WHERE source = \'Mass_Mail\'
第二行中的
SET
之后已经有
active =
。     ,        您无需在THEN之后重复\“ active = \”
UPDATE copyprogmaster
       SET active =
                 CASE
                   WHEN active = 1 THEN 0
                   WHEN active = 0 THEN 1
                  ELSE active
                 END
WHERE source = \'Mass_Mail\'
这是来自http://msdn.microsoft.com/zh-cn/library/ms181765.aspx的文档中的示例
USE AdventureWorks2008R2;
GO
SELECT   ProductNumber,Category =
      CASE ProductLine
         WHEN \'R\' THEN \'Road\'
         WHEN \'M\' THEN \'Mountain\'
         WHEN \'T\' THEN \'Touring\'
         WHEN \'S\' THEN \'Other sale items\'
         ELSE \'Not for sale\'
      END,Name
FROM Production.Product
ORDER BY ProductNumber;
GO
    ,        根据您的查询,我假设
active
字段是
bit
int
(假设
int
字段仅具有值0、1或NULL)。在这种情况下,我相信您可以按以下方式编写查询:
UPDATE  dbo.copyprogmaster
SET     active = active ^ 1
WHERE   source = \'Mass_Mail\'
请注意,查询可以处理
NULL
个值,并且屏幕快照中的行#1,#4和#6保持不变。屏幕快照#1显示表结构,屏幕截图#2显示上述查询的示例执行。 希望能有所帮助。 屏幕截图1: 屏幕截图2: