我要存储会员信息
业务是多变的,需要存储多种标识。
如:
要标识会员是否是卖家,
要标识会员手机是否已认证
要标识会员是网站还是手机注册
。。。。
这些标识是互相独立,需要支持联合查询
一般的做法是针对每个标识做个字段
tinyint is_sell comment '1:卖家,0:买家'
tinyint mobile_auth comment '1:已认证,0:未认证'
tinyint regist_from comment '1:网站,2:手机'
要查 是卖家,手机已认证的
is_sell = 1 and mobile_auth = 1
问题
标识是随时可能增加的,这意味着字段也要增加,这显然是非常困难的。
解决办法
1.标识以2的次方设置,标识值相加以10进制存储在字段中
如:卖家标识是 2的0次方,1
手机认证是 2的1次方,2
来自手机注册 2的2次方 4
某会员是卖家,来自手机注册,1+4 = 5
存储在数据库标识字段值是:5
2.要查有卖家标识的会员
(5 & 1) == 1 ------> true
二进制与运算,返回值是该标识表明成立
101
001
-----
001
3.要查有卖家标识且手机认证的会员
(5 & (1+2)) == (1+2) ----> false
二进制与运算,返回值是几个标识的和表明成立
101
011
------
001
4.要查有卖家标识且或手机认证的会员
(5 & (2+4)) > 0 --------> true
二进制与运算,返回值大于零表明或关系成立
101
110
------
100
注意:
1. 在mysql中以long字段存储,可以存储2的64方的值,即最多可存储标识64个
分享到:
相关推荐
在计算机中用二进制表示指令和字符.pdf
Linux二进制的安装往往比源码安装方便快捷,不用编译可直接进行安装,可节省大量的时间提高学习和工作效率。
第二周 在QuartusⅡ环境中用VHDL语言实现四位二进制减法器(缺0000 0001 0010),在仿真器上显示结果波形,并下载到目标芯片上,在实验箱上观察输出结果。在Multisim环境中仿真实现四位二进制减法计数器(缺0000 ...
大家可以看看,这个代码是关于二进制数如何转换成bcd码的一个用vhdl编写的程序,可以参考下思路
在VBS中用三种方法,读取和写入二进制文件。
PostgreSQL数据库没有默认的2进制转换16进制函数,在项目中用到,所以变了一个函数来实现,现在共享给大家。
Verilog中用移位及调整的方法实现二进制转BCD码源码。
MS数据库中用到的工具软件mssOdbc
android中SQLite数据库中用insert同时插入多条记录的方法和效率比较
本文介绍了在Oracle中用SQL语句实现进制间互相转换的方法。
本文举例介绍了ORACLE中用一条SQL实现其它进制到十进制的转换。
VB中用Winsock控件实现远程数据库查询.doc
VB中用ADODC控件连接ACCESS数据库
在VB中用DAO实现数据库编程 在VB中用DAO实现数据库编程.rar
在计算机中,数据是以二进制的形式存储的,例如十进制 1(10)在计算机中用 0000 0001(2)来表示。我们在用串口发送数据的时候首先将待数据转换为对应的ASCII码,然后再将这些ASCII码按照二进制的方式一位一位的...
mysql数据库mysql数据库mysql数据库VC++6.0中用ODBC连接mysql数据库VC++6.0中用ODBC连接mysql数据库
将excel直接导入mysql中的详细方法和所用到的工具、excl数据导入mysql数据库的实现代码。
机器学习中用到的数值分析.doc
机器学习中用到的数值分析报告.doc