mysql - 如何将位数据类型值分配给变量?

标签 mysql sql bit

我有一个这样的表:

// 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/

相关文章:

sql - 使用 MySQL 中另一个表的多个条件计算不同的记录

mysql 关系表

c# - 在 UInt32 中计算设置位的最快方法是什么

mysql - 查询替换数据库所有表中的术语

php - php如何获取上传文件的src

mysql - 执行变量中存在的 mysql 查询

mysql - MYSQL 对新索引数据的查询意外缓慢

mysql - 如何按工作部门和性别组合进行分组

mysql - Laravel 4.2 BIT 数据类型问题

c++ - 使用 "bitwise and"运算符 c++