问题描述
|
我到处都进行了研究,但似乎仍无法解决一个简单的错误:
运行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: