如何在MySQL列中使用二进制数据类型

时间:2016-04-14 06:38:58

标签: php mysql codeigniter bit

我被困在某处需要你的指导,基本上我使用colomn向单bit-wise operator OR(|)插入多个值,我的表结构就像 enter image description here我正在插入工作日,例如1 for sunday2 from monday4 for tuesday8 for wednesday,等等pipe sign(|)分隔{{1}它会像sunday那样插入,但是当它插入到表格时,它会显示为enter image description here

现在我想知道如何选择并显示我插入的确切值以及如何使用monday1|2更新它?

我已经使用了这个查询php(codeigniter),它通过求和所有解码值得到结果,例如5为1 | 4,3为1 | 2,但是现在如何将它转换为插入类型,如1 | 2为3和1 | 4为5等等...

1 个答案:

答案 0 :(得分:1)

$column&(1<<$day)
如果那天不在列中,则

将为0;如果该日在php中的列中,则为1<<$day

您不需要使用二进制类型。 Tinyint未签名就足够了。你可以像这样插入

(1|2)

在php中,要将其转换为您想要的格式,

echo '(';
$sep=0;
for($a=1;$a<=$column;$a<<=1)
    if($column&$a){
        if($sep) echo '|';
        else $sep=1;
        echo $a;
    }
echo ')';