我要存储会员信息
业务是多变的,需要存储多种标识。
如:
要标识会员是否是卖家,
要标识会员手机是否已认证
要标识会员是网站还是手机注册
。。。。
这些标识是互相独立,需要支持联合查询
一般的做法是针对每个标识做个字段
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个
分享到:
相关推荐
LOB(Large Object)类型用于存储大量数据,包括BLOB(Binary Large OBject)用于二进制数据,CLOB(Character Large OBject)用于文本数据,NCLOB是Unicode支持的CLOB,而BFILE则指向操作系统中的二进制文件。...
7. **二进制的优势**:计算机采用二进制是因为其物理实现容易、运算规则简单、逻辑运算直接,且二进制非常适合表示逻辑状态,适合进行逻辑判断。 8. **进制转换**:通过除法和乘法可以实现不同进制间的转换,如十...
3. 二进制大对象数据类型:Oracle中用于存储二进制大对象的数据类型是`BLOB`(题目选项C),它可以用来存储图像、视频等大型二进制数据。 4. PL/SQL的基本语法要素:PL/SQL的基本语法包括常量、基本数据类型变量和...
信息编码是用数字串标识处理对象的方法,正负数在计算机中用0和1表示,这被称为数值的数字化。在计算机中,数据存储的基本单位是位(bit),处理数据的基本单位是字节(Byte)。数据量的常见计量单位有KB、MB、GB和...
18. 英文字符的ASCII编码在机器中用8位二进制表示,最高位为0。 19. 汉字字库中存放的是汉字的字形码,用于显示和打印汉字。 20. 微型计算机的控制器负责协调各个部件工作。 21. 存储器主要包括RAM(随机访问存储器...
7. 计算机信息存储方式:计算机中所有的信息都采用二进制形式存储,这是因为二进制具有计算简单、电路实现方便的优势。 8. 磁盘驱动器的角色:磁盘驱动器属于计算机的外部存储设备,用于读取和写入数据到磁盘。 9....
3. 西文字符通常采用ASCII码进行编码,这是一个7位的二进制编码系统,能够表示128个不同的字符。 4. 按作用域从大到小排序,正确的顺序是application > session > request > pageContext。这四个概念在Web开发中...
选项A、B和C分别是以十进制、八进制形式表示数值,而D选项是以十六进制形式表示的 `long` 类型数值。 ### 2. 文件扩展名与可执行性 **题目**: 对于Windows操作系统而言,下列哪种扩展名的文件是不可执行的? - **...
13. Java数据库操作:ResultSet对象在Java中用于存储SQL查询的结果集。 14. 数据结构:线性结构包括数组、链表等,而非线性结构包括树、图等。二叉树是非线性结构的一个例子。 15. VB窗体文件扩展名:VB窗体文件的...
一般情况下,`REPLACE`命令可以应用于除通用型字段之外的大多数字段类型,因为通用型字段通常用于存储二进制大对象(BLOBs)等特殊类型的数据。 ### Visual FoxPro参照完整性规则 13. **题目**:“VisualFoxpro...
7. Access数据库对象:Access的对象包括表、查询、窗体等,不包括文件夹。 8. 显示器:显示器是计算机系统的输出设备,用于显示信息。 9. WPS与Word:WPS是国产的办公软件,从安全角度考虑,可作为Word的替代品。 ...
3. **binary**: 二进制数据,JDBC类型为BINARY,Java中用byte数组表示。 4. **bit**: 布尔值,在Java中通常对应boolean。 5. **char/nchar**: 固定长度的字符串,JDBC类型为CHAR和NCHAR,Java中用String表示。 6. **...
- **OLE**:OLE对象通常用于存储图像、声音或其他二进制数据,并不适用于字段大小属性的设置。 - **整型**:整型字段用于存储整数,其字段大小可以通过指定位数来限制。 - **长整型**:长整型字段用于存储较大的...
如果你又为它赋了整数值,那么它就变成了整数。" $foo = "0"; // $foo是字符串(ASCII 48) $foo++; // $foo是字符串"1" (ASCII 49) $foo += 1; // $foo现在是整数(2) $foo = $foo + 1.3; // $foo是一个双精度数(3.3) ...