如何在SQL中否定一点列值

Bel*_*ash 28 sql t-sql sql-server

如何更新表列以恢复其值(如果value为false,则设置为true;如果为true,则设置为false!null保持为null).

请排除使用的解决方案case whenIIF()我想要的内容如下

UPDATE mytable SET IsEditable = !IsEditable
Run Code Online (Sandbox Code Playgroud)

And*_*yev 43

您可以使用按位NOT运算符:

update mytable set IsEditable = ~IsEditable
Run Code Online (Sandbox Code Playgroud)


Ion*_*nic 17

只要用这个:

UPDATE mytable SET IsEditable=IsEditable^1
Run Code Online (Sandbox Code Playgroud)

如果你想测试它:

SELECT CONVERT(bit,0)^1, CONVERT(bit,1)^1
Run Code Online (Sandbox Code Playgroud)


shA*_*A.t 7

作为数学解决方案,您可以使用它

update mytable set IsEditable = 1 - IsEditable;
Run Code Online (Sandbox Code Playgroud)
  • IsEditable = 0 => 1 - IsEditable = 1
  • IsEditable = 1 => 1 - IsEditable = 0
  • IsEditable = Null => 1 - IsEditable = Null