_대문 | 방명록 | 최근글 | 홈피소개 | 주인놈
FrontPage › StringCompare2

Contents

[-]
1 bit 연산 문제
2 솔루션


1 bit 연산 문제 #

예를 들어, 200606 ~ 200812까지 사이트 접속여부를 bit로 나타낸 컬럼이 있다고 가정하자.
다음과 같은 2가지 bit 문자열이 있다.

  • 111000101111000000 --> int 232384
  • 111100101111000001 --> int 248769

즉, 101000000000000000 이면, 200606, 200608에 접속한 것이다. 만약 위 2개의 bit 문자열에서 차이를 비교한다면 어떻게 해야 할까?

2 솔루션 #

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);

댓글 남기기..
이름: : 오른쪽의 새로고침을 클릭해 주세요. 새로고침
EditText : Print : Mobile : FindPage : DeletePage : LikePages : Powered by MoniWiki : Last modified 2018-04-13 23:12:52

좋은 책을 읽는 것은 과거의 가장 뛰어난 사람들과 대화를 나누는 것과 같다. (데카르트)