18
Trong TSql, làm thế nào để bạn tắt một bit cụ thể trong một bitmask mà không cần phải kiểm tra xem nếu bit được thiết lập hay không?Làm thế nào để bạn tắt một bit cụ thể trong một mặt nạ bit?
Trong TSql, làm thế nào để bạn tắt một bit cụ thể trong một bitmask mà không cần phải kiểm tra xem nếu bit được thiết lập hay không?Làm thế nào để bạn tắt một bit cụ thể trong một mặt nạ bit?
Tìm thấy nó! Sử dụng & ~ như thế này ...
UPDATE MyTable SET
MyBitmask = MyBitmask & ~128 -- 8th bit
WHERE MyID = 123
Các ~ điều hành flips tất cả các bit (1s trở thành 0s và 0s trở thành 1s). Chỉ cần đặt giá trị mà bạn lật sang giá trị mà bạn muốn tắt và sử dụng & để tắt một cách an toàn chỉ một bit cụ thể mà không phải kiểm tra xem bit đã được đặt hay chưa.