2016-08-28 4 views
1

У меня есть таблица вроде этого:Как я могу присвоить значение битового типа данных переменной?

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

И вот некоторые примеры текущего и ожидаемого результата:

example1:

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

example2:

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

Example3:

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

Ну, как я могу это сделать? Как вы видите, я пытаюсь присвоить исходное значение бита этого столбца этой переменной (но похоже, что есть преобразование, как я могу избежать этого?). Я действительно не знаю, почему @var не содержит двоичное значение.

+0

Можете ли вы поделиться ** SQL скрипку **? – 1000111

ответ

0

Вы можете подать двоичное представление этого значения bitmap в значение @var с использованием 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. Если базовое значение, которое должно быть преобразовано в отрицательное число, считается числом, подписанным. В противном случае он обрабатывается как unsigned.

Синтаксис:

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. 
Смежные вопросы