MS SQL 비트연산(&)

DataBase/MS-SQL|2020. 12. 22. 10:42
반응형

사용 배경은 계속적으로 추가되는 Flag 컬럼에 대해 고민 중 하나의 공용 컬럼에 값을 다 넣어버리기로 함.

 

 

DECLARE @i INT
SET @i = 6
SELECT @i & 1  , 결과 => 0
SELECT @i & 2  , 결과 => 2 
SELECT @i & 4  , 결과 => 4
SELECT @i & 6  , 결과 => 6
SELECT @i & 8  , 결과 => 0

 

INT 타입의 컬럼에 정수형 데이터를 넣고 2진법으로 보아 계산을 하는 방법.

 

2번째 조회인 @i & 2 의 내용을 보면.

 

6 > 0110

2 > 0010

======

      0010  > 2

결과 값이 2가 나온다.

 

일반적으로 사용할 경우에는

 

SELECT *

FROM 테이블

WHERE 컬럼 & 2 > 0

위와 같이 0보다 크거나(True) 작은 경우(False)로 구분하여 사용된다.

 

 

ex)

취미 체크하기

ㅁ 축구(1) ㅁ농구(2) ㅁ독서(4)

 

위와 같이 체크박스가 있는 경우 취미가 축구와 독서일 경우

저장값은 두 값의 합을 넣는다.   >> 5 

 


DECLARE @i INT
SET @i = 5
SELECT @i & 1  , 결과 => 1
SELECT @i & 2  , 결과 => 0
SELECT @i & 4  , 결과 => 4

 

 

축구가 포함된 경우를 찾으려면


SELECT *
FROM TABLE

WHERE 취미 & 1 > 0 

 

위와 같이 찾는다.

 

 

댓글()