Как переключить значения столбцов от 0 до 1 и наоборот с помощью инструкции обновления?

У меня есть таблица Table1 следующим образом

col1 col2
---- ----
 A    1
 B    1
 C    1
 D    0
 E    0
 F    0

Я хочу, чтобы таблица результатов была следующей (с помощью оператора Update)

col1 col2
---- ----
 A    0
 B    0
 C    0
 D    1
 E    1
 F    1

Ответ 1

Script 1: Демо в скрипте SQL

UPDATE dbo.Table1 SET col2 = (CASE col2 WHEN 1 THEN 0 ELSE 1 END);

Script 2. Если значения всегда равны 0 или 1, вы можете использовать оператор Bitwise Exclusive OR. Демо в скрипте SQL

UPDATE dbo.Table1 SET col2 = (col2 ^ 1);

Ответ 2

Поскольку вы упомянули, что используете INT, как насчет:

update dbo.Table1 set col2 = 1 - col2;

Ответ 3

Я уверен, что есть более элегантный способ, но это должно работать:

UPDATE Table1
SET col2 = CASE col2 WHEN 0 THEN 1 WHEN 1 THEN 0 ELSE col2 END

Ответ 4

Если вы используете правильное логическое (BIT) на SQL Server, вы можете использовать это: http://sqlfiddle.com/#!6/0ed3c/1

UPDATE dbo.Table1 SET col2 = ~col2;

Ответ 5

Очень простой запрос

update table set col= (col-1)* -1;

Объяснение:

  • Случай 0:

    update table set col= (0-1)* -1; // return 1;
    
  • Дело 1:

    update table set col= (1-1)* -1; // return 0;