• MS SQL 비트연산(&)

    2020. 12. 22.

    by. Yo.

    728x90

    사용 배경은 계속적으로 추가되는 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 

     

    위와 같이 찾는다.

     

     

    728x90

    댓글