我有一个这样的表:
// numbers
+---------+------------+
| id | numb |
+---------+------------+
| int(11) | bit(10) |
+---------+------------+
| 1 | 0000000001 |
| 2 | 0000000101 |
| 3 | 0000000000 |
| 4 | 0000001011 |
+---------+------------+
当我获取numb
列时,结果如下:
// Query
mysql> SELECT numb FROM numbers WHERE id = 2
// Fetching by PHP (pdo)
$result = $stm->fetch();
$numb = $result['numb'];
echo $numb;
//=> 5
正如您所看到的,最终结果是5
。而我想把这个精确的值作为一个字符串,比如这个0000000101
。我该怎么做?
您可以使用decbin()函数和sprintf来预挂起零
<?php
$numb = 5;
echo sprintf("%010d",decbin($numb));
输出:
0000000101
根据您的评论:
12 - 0000001100
26 - 0000011010
更新1:
您可以这样分配给$numb
变量:
$numb = sprintf("%010d",decbin($result['numb']));
这完全是按照您的要求使用SQL:
使用CONV()和LPAD():
LPAD(CONV(id,10,2),10,0)
这是SQLFiddle为您提供的