如何在SQL中否定一点列值

时间:2015-06-19 11:06:38

标签: sql sql-server tsql

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

请排除使用case whenIIF()我需要的内容

的解决方案
UPDATE mytable SET IsEditable = !IsEditable

3 个答案:

答案 0 :(得分:39)

您可以使用bitwise NOT operator

update mytable set IsEditable = ~IsEditable

答案 1 :(得分:15)

请使用:

UPDATE mytable SET IsEditable=IsEditable^1

如果你想测试它:

SELECT CONVERT(bit,0)^1, CONVERT(bit,1)^1

答案 2 :(得分:5)

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

IsEditable = 0
  • 1 - IsEditable = 1 => IsEditable = 1
  • 1 - IsEditable = 0 => IsEditable = Null
  • 1 - IsEditable = Null => self