多选择项类型字段存储与查询

对于选择项采用整型(int)来进行存储。
比如说 页面多选的项有I类 , II类 ,III类 , IV类 , V类 。

Int型对于32位系统来说是4个字节的长度,用二进制表示为如下的方式
11111111,11111111,11111111,11111111
我们采用map的方式来存储相应的数据结构Map<String,Integer> 也就是对于选项名称和数值做一个映射
I类 : 1
II类 : 2
III类 : 4
IV类 : 8
V类 : 16
选择多项的时候,这些数值之间是相加的关系,如:
A单位可以选择I类,III类
则A单位的nuclideSaleActive字段的值表示为1+4=5

查询时采用Sqlserver的位与运算符&即可进行组合查询,对于查询可以带来非常明显的好处,例如要查询销售I类,III类放射源的普通涉源单位,则可以写出如下的语句
Select * from CCCompany where nuclideSaleActive&5=5

例如:
我存到数据库的数据可能是 1+2, 1+4,2+4,1+8,1+2+4+8的组合等等。(对应上面的类别)
然后我如果选择的II类和III类 。
那么我查询的结果可以是Select * from CCCompany where nuclideSaleActive&6=6
结果条数为2条,分别为2+4,1+2+4+8

这样来做多选择项的查询 效率快多了,而且方便实用。 :D
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值