数据库字段打标

一、背景

前两天系统要增加了一个功能,需要统计出客户无发票退货原因报表,这个需要把无发票退货订单标记出来,这种最常规的做法就是增加一个字段,但加字段方式不可扩展,尤其是当表数据量大更改表结构困难的时候,这时我们可以考虑用二进制标记位来做,这种做法在大厂里应用得非常普遍,我们在牛奶项目的用户表中也有应用,下面介绍一下使用方法。

二、二进制与位运算

数据库中使用Int类型来存储用户标记,用2的次幂代表一种状态,比如2^0代表合伙人,2^1代表经过实名认证,2^3 代表经销商 ,2^4代表VIP合伙人,每个二进制位标记只包含两个含义:即有或没有。

三、打标、去标、读标

打标:把字段某个Bit位设为1,用的是或操作,对其它标记位没有影响。

去标:把字段某个Bit位设为0,用的是与操作(只有要去掉的位设为0,其它位全部设为1),对其它标记位也没有影响。

读标:判断标对应的位为1,用的是与操作。

四、打标例子代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值