09月05, 2022
收藏本站

是否字段存储优化

是否字段存储优化

  1. 定义是否字段bit_tag
bit_tag int unsigned not null default 0 comment '二进制表示,十进制存储。(第1位表示是否开票,第二位表示是否发货,。。。)'
  1. 插入状态
# 插入二进制1001(第1位和第4位为是)
# 使用二进制转十进制conv
insert into tb(bit_tag) values(conv(1001,2,4));
  1. 修改状态
    是:val | 1<<(n-1) 否:~(1<<(n-1)) & val
# 修改第3位为是
update tb set bit_tag=bit_tag|1<<(3-1) where id=1;

# 修改第4位为否
update tb set bit_tag=~(1<<(4-1)) & bit_tag where id=1;
  1. 查询状态
# 查询第5位是否为是
select * from tb where bit_tag & 1<<(5-1) >0 ;

# 查询第5位是否为否
select * from tb where bit_tag & 1<<(5-1) =0 ;

Comments