如何在位掩码中关闭特定位?

Bri*_*ian 22 t-sql

在TSql中,如何关闭位掩码中的特定位而不必检查该位是否已设置?

Bri*_*ian 38

找到了!使用&〜像这样......

UPDATE MyTable SET
        MyBitmask = MyBitmask & ~128 -- 8th bit
    WHERE MyID = 123
Run Code Online (Sandbox Code Playgroud)

〜运算符翻转所有位(1变为0,0变为1).只需将您要翻转的值设置为要关闭的值,然后使用&安全地关闭一个特定位,而不必检查该位是否已设置.