2016-08-28 5 views
1

는이 같은 테이블이 있습니다변수에 비트 데이터 유형 값을 할당하려면 어떻게합니까?

// mytable 
+---------+-------------+ 
| id | bitmap | 
+---------+-------------+ 
| int(11) | BIT(10) | 
+---------+-------------+ 
| 1  | 01111111000 | 
| 2  | 01111111111 | 
| 3  | 00000000001 | 
+---------+-------------+ 

을 그리고 이들은 현재와 예상 출력의 몇 가지 예입니다 :

예 1 :

SELECT bitmap INTO @var FROM mytable WHERE id = 1; 
SELECT @var; 
/* Current output: 1016 
    Expected output: 01111111000 
*/ 

예 2 :

SELECT bitmap INTO @var FROM mytable WHERE id = 2; 
SELECT @var; 
/* Current output: 1023 
    Expected output: 01111111111 
*/ 

예 3 : 음

SELECT bitmap INTO @var FROM mytable WHERE id = 3; 
SELECT @var; 
/* Current output: 1 
    Expected output: 00000000001 
*/ 

나는 그렇게 할 수있는 방법을? 보시다시피, 해당 변수 해당 열의 원래 비트 값을 할당하려면 노력하고있어 (하지만 거기에 변환이있는 것, 어떻게 피할 수 있습니까?). @var에 이진 값이 포함되어 있지 않은 이유를 정말로 모르겠습니다.

+0

당신은 ** ** SQL 바이올린을 공유 할 수 있습니까? – 1000111

답변

0

bitmap 열 값의 이진 표현을에 CONV(N,from_base,to_base) 기능을 사용하여 입력 할 수 있습니다.

SELECT CONV(bitmap,2,2) INTO @var FROM mytable WHERE id = 1; 
SELECT @var; 

참고

CONV() 함수

MySQL CONV() 다른 숫자베이스 번호 시스템에 하나의 숫자 염기 번호 시스템의 숫자로 변환한다. 변환 후 함수는 숫자의 문자열 표현을 반환합니다.

정의 된 인수가 NULL 인 경우 반환 값은 NULL이됩니다.

최소 기준은 2이고 최대 기준은 36입니다. 변환 할 기준이 음수이면 부호있는 숫자로 간주됩니다. 그렇지 않으면 서명되지 않은 것으로 처리됩니다.

구문 :

CONV(num , from_base , to_base); 

인수

Name  Description 
num  A number. 
from_base Existing base of the number num. 
to_base Base of the number num after conversion. 
관련 문제