MS SQL 비트연산(&)
사용 배경은 계속적으로 추가되는 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
위와 같이 찾는다.