小编STW*_*STW的帖子

如何将 mysql bit(64) 列显示为一串 1 和 0?

我们有一个 MySQL 5.5 数据库,其中有一个表,其中包含许多用于计算汉明距离的 64 位值。这些列被定义为BIT(64)并使用这样的位字段文字语法填充(注意0b前缀):

create table hash_values ( hash bit(64) );
insert into hash_values; 
  (0b0000000011111111000000001111111100000000111111110000000011111111)
Run Code Online (Sandbox Code Playgroud)

出于调试目的,我们需要将位值显示为由 1 和 0 组成的字符串,但只能通过看起来像一个丑陋的 hack 来做到这一点:

select conv(cast(hash as unsigned), 10, 2) hash from hash_values;
+------------------------------------------------------------------+
| hash                                                             |
+------------------------------------------------------------------+
| 0000000011111111000000001111111100000000111111110000000011111111 |
+------------------------------------------------------------------+
1 row in set (0.01 sec)
Run Code Online (Sandbox Code Playgroud)

这首先用于CAST()获取整数表示;然后使用该CONV()方法将其从 base-10 转换回 base-2。它似乎有效,但我觉得我们忽略了一种将位值转换为 base-2 字符串的简单方法。

mysql mysql-5.5 cast

5
推荐指数
1
解决办法
1547
查看次数

标签 统计

cast ×1

mysql ×1

mysql-5.5 ×1