2013-02-23 1 views
1

하나의 테이블에 이진 비트를 플래그로 사용하는 필드가있는 데이터베이스가 있습니다. 따라서 어떤 플래그가 전환되는지에 따라 다양한 값을 가질 수 있으므로 값만 보는 것은 도움이되지 않습니다. 즉, 8보다 큰 값이 8의 값이 사용 중이라는 것을 의미하지는 않습니다 (예 : 17은 16 + 1 임).MySQL의 다중 레코드 필드에 비트 값을 추가하는 방법

이것을 염두에두고, 특정 필드에 대해 비트를 설정하거나 해제하려면 여러 레코드를 업데이트하는 방법이 있습니까 (예 : 값 8)? 일부 레코드는 다른 레코드가 설정되어있는 동안 설정 될 수 있으므로, 8에서 레코드를 간단하게 추가하거나 뺄 필요가 없습니다.

답변

0

BIT functions을 사용하십시오. 비트 1을 설정하려면 :

update your_table 
set bit_field = bit_field | b'0001' 

해제 비트 1 : 당신은 비트 OR | 및 AND & 기능을 사용할 수 있습니다

update your_table 
set bit_field = bit_field & b'1110' 

SQLFiddle demo

+0

So | 비트를 추가하고 & 만 일치하는 비트를 유지합니다 (1로 설정)? – Wolfie

+0

@Wolfie 정확히. –

+0

당신이 제공 한 링크를 보면서, 설정을 취소하면 더 나은 대안이 될 것입니까? * 처음 답한 이후로 귀하의 답변을 답변으로 표시했습니다. 감사. – Wolfie