2017-03-29 9 views
0
내가이로 함께 둘 다하고 싶은 비트 단위 필드에서 나는 두 플래그
Declare @status int = 3 
SET @status &= ~3 -- this will remove 1 and 2 if exists 
SET @status |= 12 -- this will add 4 and 8 if exists 

비트 단위 덧셈과 뺄셈 문

를 추가 할 동시에 플래그를 제거 할

SET @status = (@status | 12) - (CASE WHEN (@status & 2 = 2) THEN 2 ELSE 0 END) - (CASE WHEN (@status & 1 = 1) THEN 1 ELSE 0 END) 

와 같은 업데이트 명령문에 사용됩니다. 추가 부분과 함께 비트 연산자를 사용하여 빼기 부분을 수행하는 방법을 알고 있습니다.

뭔가 같은, 사전에

SET @status |= 12 & ~2 --But this doesn't do what I want 

감사합니다.

답변

1

작동하지 않습니까?

SET @status = ((@status & ~3) | 12) 
+0

예 감사합니다. Gordon – Ash