数据库表字段设计一个字段存多个下拉框值

时间:2024-03-28 16:26:47

有时候经常会遇到下拉框的多个值存在一个表的字段,如果这样设计查询的话可能比较麻烦。因为你查询的话,选择任何一个下拉框的里面的值,查询出来的结果集应该是只要包含里面一个值就查询出来这条记录。

 

数据库表字段设计一个字段存多个下拉框值

 

想了很多办法,最后采用二进制的形式设计,解决了这个查询。

下拉框里面的值:

1:方案商,2:生产厂商,3:经销商,4:代理商,5:其他

 

如果你要查询一个下拉框的值,比如你要查询 2 生产厂商这个值,前端可以采用英文“,”分隔来接收。

如果你要查询 2:生产厂商  ,可以转换为 0010这个二进制的值。 

当前这条记录行业角色为   1:方案商,2:生产厂商,3:经销商,4:代理商,转换为二进制就是   1111的形式。

根据二进制的特性,二进制进行与运算,如果与这个值等于自己,说明这条记录符合查询,就刷选出来了这条记录。

Oracle 里面的查询形式为:and  bitand(o.PURCHASE_USE_NUM,#{purchaseUseNum})=#{purchaseUseNum}。

我一般设计有两个字段,比如行业角色我会设计为二进制转换为数字的字段PURCHASE_USE_NUM和下拉框选项的字段值,比如当前记录有4条选项 1:方案商,2:生产厂商,3:经销商,4:代理商,保存为 PURCHASE_USE_NUM保存为  15, PURCHASE_USE_CODE保存为1,2,3,4.

 

上面就是我采用的方式,如果有更好的方式请指点。