在SQL Server中更新零到一,零到零

时间:2017-11-17 06:45:37

标签: sql sql-server database performance sql-server-2008

我有一个标志为0和1的表。

请告诉我如何将Zero更新为One,将其更新为零

DECLARE @a INT, @b INT

SELECT @a = number
FROM zerone
WHERE number = 0

SELECT @b = number
FROM zerone
WHERE number = 1

BEGIN
    IF @a = 0
        UPDATE zerone
        SET number = 1
        WHERE @a = 0
    ELSE IF @b = 1
        UPDATE zerone
        SET number = 0
        WHERE @b = 1
END

此查询对我不起作用。

4 个答案:

答案 0 :(得分:2)

使用以下查询将0更新为1,将1更新为0

update zerone set number= 1-number

答案 1 :(得分:1)

就是这样:

UPDATE zerone
SET number = CASE WHEN number = 1 THEN 0 ELSE 1 END;

答案 2 :(得分:0)

您还应始终考虑更新操作中的NULL值,并且必须明确过滤掉它们

UPDATE zerone
SET number= case 
              when 1 then 0
              when 0 then 1
             end
WHERE number in (0,1)

此外,您的查询将无效,因为您在select语句中为一行数据分配了一行数据。

SELECT @a = number
FROM zerone
WHERE number = 0

这不像您期望的那样工作,并且只会为@a赋值为NULL(如果没有行)或者如果有行则为0。如果有多行,那么它将具有单个值0

答案 3 :(得分:0)

正如您所看到的,有很多方法可以执行该任务,但在这种情况下,我更希望@Abdul Rasheed。 我们还可以使用IIF中的SQLSERVER2012 or above逻辑函数。

UPDATE zerone
SET number = IIF (number = 1, 0, 1)