如何解决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:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。