`
锅巴49
  • 浏览: 163301 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

数据库中用二进制数值存储及查询标识值

 
阅读更多

我要存储会员信息

 

业务是多变的,需要存储多种标识。

 

如:

 

要标识会员是否是卖家,

要标识会员手机是否已认证

要标识会员是网站还是手机注册

 

。。。。

 

这些标识是互相独立,需要支持联合查询

 

 

一般的做法是针对每个标识做个字段

 

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个

 

 

 

 

分享到:
评论
1 楼 bingyingao 2012-09-04  
很有用,标记一下

相关推荐

    管理信息化ORACLE完美Oracle数据库知识学习文档总汇.pdf

    LOB(Large Object)类型用于存储大量数据,包括BLOB(Binary Large OBject)用于二进制数据,CLOB(Character Large OBject)用于文本数据,NCLOB是Unicode支持的CLOB,而BFILE则指向操作系统中的二进制文件。...

    大学计算机基础超详细知识点(高手总结)免费..docx

    7. **二进制的优势**:计算机采用二进制是因为其物理实现容易、运算规则简单、逻辑运算直接,且二进制非常适合表示逻辑状态,适合进行逻辑判断。 8. **进制转换**:通过除法和乘法可以实现不同进制间的转换,如十...

    oracle考试题库.docx

    3. 二进制大对象数据类型:Oracle中用于存储二进制大对象的数据类型是`BLOB`(题目选项C),它可以用来存储图像、视频等大型二进制数据。 4. PL/SQL的基本语法要素:PL/SQL的基本语法包括常量、基本数据类型变量和...

    大学计算机基础超详细知识点高手总结.pdf

    信息编码是用数字串标识处理对象的方法,正负数在计算机中用0和1表示,这被称为数值的数字化。在计算机中,数据存储的基本单位是位(bit),处理数据的基本单位是字节(Byte)。数据量的常见计量单位有KB、MB、GB和...

    计算机中大东校区.doc

    18. 英文字符的ASCII编码在机器中用8位二进制表示,最高位为0。 19. 汉字字库中存放的是汉字的字形码,用于显示和打印汉字。 20. 微型计算机的控制器负责协调各个部件工作。 21. 存储器主要包括RAM(随机访问存储器...

    2021-2022计算机二级等级考试试题及答案No.13483.docx

    7. 计算机信息存储方式:计算机中所有的信息都采用二进制形式存储,这是因为二进制具有计算简单、电路实现方便的优势。 8. 磁盘驱动器的角色:磁盘驱动器属于计算机的外部存储设备,用于读取和写入数据到磁盘。 9....

    2021-2022计算机二级等级考试试题及答案No.19266.docx

    3. 西文字符通常采用ASCII码进行编码,这是一个7位的二进制编码系统,能够表示128个不同的字符。 4. 按作用域从大到小排序,正确的顺序是application > session > request > pageContext。这四个概念在Web开发中...

    2021-2022计算机二级等级考试试题及答案No.10839.docx

    选项A、B和C分别是以十进制、八进制形式表示数值,而D选项是以十六进制形式表示的 `long` 类型数值。 ### 2. 文件扩展名与可执行性 **题目**: 对于Windows操作系统而言,下列哪种扩展名的文件是不可执行的? - **...

    2021-2022计算机二级等级考试试题及答案No.16668.docx

    13. Java数据库操作:ResultSet对象在Java中用于存储SQL查询的结果集。 14. 数据结构:线性结构包括数组、链表等,而非线性结构包括树、图等。二叉树是非线性结构的一个例子。 15. VB窗体文件扩展名:VB窗体文件的...

    2021-2022计算机二级等级考试试题及答案No.2886.docx

    一般情况下,`REPLACE`命令可以应用于除通用型字段之外的大多数字段类型,因为通用型字段通常用于存储二进制大对象(BLOBs)等特殊类型的数据。 ### Visual FoxPro参照完整性规则 13. **题目**:“VisualFoxpro...

    2021-2022计算机二级等级考试试题及答案No.5267.docx

    7. Access数据库对象:Access的对象包括表、查询、窗体等,不包括文件夹。 8. 显示器:显示器是计算机系统的输出设备,用于显示信息。 9. WPS与Word:WPS是国产的办公软件,从安全角度考虑,可作为Word的替代品。 ...

    TDS通讯协议分析报告

    3. **binary**: 二进制数据,JDBC类型为BINARY,Java中用byte数组表示。 4. **bit**: 布尔值,在Java中通常对应boolean。 5. **char/nchar**: 固定长度的字符串,JDBC类型为CHAR和NCHAR,Java中用String表示。 6. **...

    2021-2022计算机二级等级考试试题及答案No.18071.docx

    - **OLE**:OLE对象通常用于存储图像、声音或其他二进制数据,并不适用于字段大小属性的设置。 - **整型**:整型字段用于存储整数,其字段大小可以通过指定位数来限制。 - **长整型**:长整型字段用于存储较大的...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    如果你又为它赋了整数值,那么它就变成了整数。" $foo = "0"; // $foo是字符串(ASCII 48) $foo++; // $foo是字符串"1" (ASCII 49) $foo += 1; // $foo现在是整数(2) $foo = $foo + 1.3; // $foo是一个双精度数(3.3) ...

Global site tag (gtag.js) - Google Analytics