#title bit연산 문제 [[TableOfContents]] ==== bit 연산 문제 ==== 예를 들어, 200606 ~ 200812까지 사이트 접속여부를 bit로 나타낸 컬럼이 있다고 가정하자. 다음과 같은 2가지 bit 문자열이 있다. * 111000101111000000 --> int 232384 * 111100101111000001 --> int 248769 즉, 101000000000000000 이면, 200606, 200608에 접속한 것이다. 만약 위 2개의 bit 문자열에서 차이를 비교한다면 어떻게 해야 할까? ==== 솔루션 ==== {{{ with dumy as ( select 1 seq union all select seq + 1 from dumy where seq + 1 <= datediff(dd, '20060601', getdate()) ), rs as ( select seq , convert(char(6),dateadd(mm, seq, '20060601'), 112) yyyymm from dumy ), bits as ( select '111000101111000000' bit1, '111100101111000001' bit2 --232384 ^ 248769 ) select b.yyyymm from bits a inner join rs b on b.seq <= len(a.bit1) where substring(a.bit1, seq, 1) <> substring(a.bit2, seq, 1) option (maxrecursion 0); }}}