2016-08-28 41 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

您可以使用CONV(N,from_base,to_base)函數將該bitmap列值的二進制表示形式提供給@var

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. 
相關問題