2009-07-10 2 views
16

데이터베이스에 ints 필드가 비트 마스크되어 있습니다. 보통 내가 C# 코드를 통해 관리 할 수 ​​있지만, 지금은 T-SQL을 사용하여 마스크의 비트를 반전 할 필요가T-SQL의 비트 반전 작업

나는 다음과 같은 수행 방법은 다음과 같습니다

내가 원하는 비트 플립 : 1 < < 8 (256)

I 플립 전에 마스크 값 : 143

I 후의 마스크 값 플립 : 399

이것은 T-SQL에없는 비트 연산자없이 할 수 있습니다. 맞습니까?

답변

25

사용 XOR : 당신은뿐만 아니라 지수에 전달하려는 경우

SELECT value^256 

따라서 귀하의 경우, SELECT 143^256 실제로 399를 반환합니다

SELECT value^POWER(2, power) 
+0

감사합니다! 그것은 내 문제를 해결! 우아한 방법으로 비트를 켜는 방법이 있습니까? (이미 해봤지만 추한 것처럼 보입니다 ...) –

+2

뒤집기 또는 켜기를 원하십니까? 뒤집기 - XOR 사용 (^); 켜기 - OR (|)을 사용하십시오. 좀 더 우아함을 원한다면 사용자 정의 함수 (tarly named user-defined function)로 포장하십시오. :) –

20

TSQL 비트 연산자를 찾을 수 here 그들을 사용하는 방법에 대한 좋은 기사는 here

+1

질문은 비트 이동에 관한 것이며, 게시 한 기사는 그 내용과 아무 관련이 없습니다. – Edwin

+3

질문은 비트 이동에 관한 것이 아니라 비트 이동에 관한 것입니다. –

+0

제목은 비트 이동에 대해서는 잘못되었지만 비트 이동에 대해서는 실제 질문입니다. – DaveBoltman