我有一个这样的表:
// 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
不包含二进制值。
最佳答案
您可以使用 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.
关于mysql - 如何将位数据类型值分配给变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39187750/